功能 'using declarations' 在 C# 7.3 中不可用。请使用 8.0 或更高版本的语言 - 在一台机器上出错但在另一台机器上工作
Feature 'using declarations' is not available in C# 7.3. Please use language version 8.0 or greater - Error on one machine but works on another
在两台不同的机器上使用 Visual Studio Enterprise 16.3.7 时,一台构建正常,另一台机器抛出错误:
Feature 'using declarations' is not available in C# 7.3. Please use
language version 8.0 or greater.
这可以很容易地在非工作机器上通过设置 .csproj
中的 LangVersion
来解决 或让 Visual Studio 像屏幕截图一样自动修复它以上。
<LangVersion>8.0</LangVersion>
我不明白的是为什么一台机器在 .csproj
中没有这条线就可以正常构建而另一台机器需要它?
我下载了最新版本的 .Net Core 3.0 和 3.1,也遇到了同样的问题。对我来说,修复程序似乎下载了 Visual Studio 2019 的最新更新(至版本 16.4.2)。
这也重新启动了我的计算机,错误消失了。
我收到了同样的错误,但我只是忘了包含
<LangVersion>8.0</LangVersion>
属性 ALL 解决方案中的 .csproj 文件。
以下是我当前的 C# 8 设置:
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<LangVersion>8.0</LangVersion>
<Nullable>enable</Nullable>
<NullableContextOptions>enable</NullableContextOptions>
</PropertyGroup>
我发现以下文档在从核心 2.2 迁移到 3.x 时最有帮助:
我必须将 Visual Studio 的版本从 16.3.X 更新到 16.4.2。这解决了问题,我不必添加任何 LangVersion。
这可能是因为编译器默认为不同的目标框架使用不同的 C# 语言版本。
要覆盖默认的 C# 语言,请添加到项目文件(如问题中所建议的):
<PropertyGroup>
<LangVersion>8.0</LangVersion>
</PropertyGroup>
或:
<PropertyGroup>
<LangVersion>latest</LangVersion>
</PropertyGroup>
注意:不建议使用比默认版本更新的语言版本。
从 C# language versioning - Microsoft Docs(截至 2022 年 3 月 11 日):
This default choice also ensures you don't use a language that requires types or runtime behavior not available in your target framework. Choosing a language version newer than the default can cause hard to diagnose compile-time and runtime errors.
有关不同目标框架的默认 C# 语言版本以及如何手动 select C# 语言版本,请参阅 C# language versioning - Microsoft Docs。
有关此主题的更多信息,另请参阅堆栈溢出答案 。
这是 C# language versioning - Microsoft Docs 文章(截至 2022 年 3 月 11 日)的一部分,其中解释了不同目标框架的默认语言版本:
C# language versioning
The latest C# compiler determines a default language version based on your project's target framework or frameworks. Visual Studio doesn't provide a UI to change the value, but you can change it by editing the csproj file. The choice of default ensures that you use the latest language version compatible with your target framework. You benefit from access to the latest language features compatible with your project's target. This default choice also ensures you don't use a language that requires types or runtime behavior not available in your target framework. Choosing a language version newer than the default can cause hard to diagnose compile-time and runtime errors.
C# 10 is supported only on .NET 6 and newer versions. C# 9 is supported only on .NET 5 and newer versions. C# 8.0 is supported only on .NET Core 3.x and newer versions.
...
Defaults
The compiler determines a default based on these rules:
╔══════════════════╦═════════╦═════════════════════════════╗
║ Target framework ║ version ║ C# language version default ║
╠══════════════════╬═════════╬═════════════════════════════╣
║ .NET ║ 6.x ║ C# 10 ║
║ .NET ║ 5.x ║ C# 9.0 ║
║ .NET Core ║ 3.x ║ C# 8.0 ║
║ .NET Core ║ 2.x ║ C# 7.3 ║
║ .NET Standard ║ 2.1 ║ C# 8.0 ║
║ .NET Standard ║ 2.0 ║ C# 7.3 ║
║ .NET Standard ║ 1.x ║ C# 7.3 ║
║ .NET Framework ║ all ║ C# 7.3 ║
╚══════════════════╩═════════╩═════════════════════════════╝
我做了以下并解决了我的问题:
在解决方案目录中创建一个名为“Directory.Build.props”的文件并写入以下代码:
<Project>
<PropertyGroup>
<LangVersion>latest</LangVersion>
</PropertyGroup>
</Project>
删除了.vs文件夹(它隐藏在解决方案目录中)
重启 Visual Studio
2021
原因:您可能针对 .NET Standard 2.0,它使用 C# 7.3 .
修复: 在项目的 属性下, 单击 应用程序 面板并选择 .NET Standard 2.1 作为目标框架.
经过上述更改后,Visual Studio2019 将自行修复该问题,无需LangVersion
设置。
您必须在 *.csproj 文件的 PropertyGroup 之一中忘记此标记。
<LangVersion>8.0</LangVersion>
如果您安装 ReSharper,它会自动为您修改 csproj 文件;)
检查您在两台机器上的配置是否有效(Debug/Release、x64/Any CPU)。这也可能导致此错误。
在两台不同的机器上使用 Visual Studio Enterprise 16.3.7 时,一台构建正常,另一台机器抛出错误:
Feature 'using declarations' is not available in C# 7.3. Please use language version 8.0 or greater.
这可以很容易地在非工作机器上通过设置 .csproj
中的 LangVersion
来解决
<LangVersion>8.0</LangVersion>
我不明白的是为什么一台机器在 .csproj
中没有这条线就可以正常构建而另一台机器需要它?
我下载了最新版本的 .Net Core 3.0 和 3.1,也遇到了同样的问题。对我来说,修复程序似乎下载了 Visual Studio 2019 的最新更新(至版本 16.4.2)。
这也重新启动了我的计算机,错误消失了。
我收到了同样的错误,但我只是忘了包含
<LangVersion>8.0</LangVersion>
属性 ALL 解决方案中的 .csproj 文件。 以下是我当前的 C# 8 设置:
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<LangVersion>8.0</LangVersion>
<Nullable>enable</Nullable>
<NullableContextOptions>enable</NullableContextOptions>
</PropertyGroup>
我发现以下文档在从核心 2.2 迁移到 3.x 时最有帮助:
我必须将 Visual Studio 的版本从 16.3.X 更新到 16.4.2。这解决了问题,我不必添加任何 LangVersion。
这可能是因为编译器默认为不同的目标框架使用不同的 C# 语言版本。
要覆盖默认的 C# 语言,请添加到项目文件(如问题中所建议的):
<PropertyGroup>
<LangVersion>8.0</LangVersion>
</PropertyGroup>
或:
<PropertyGroup>
<LangVersion>latest</LangVersion>
</PropertyGroup>
注意:不建议使用比默认版本更新的语言版本。
从 C# language versioning - Microsoft Docs(截至 2022 年 3 月 11 日):
This default choice also ensures you don't use a language that requires types or runtime behavior not available in your target framework. Choosing a language version newer than the default can cause hard to diagnose compile-time and runtime errors.
有关不同目标框架的默认 C# 语言版本以及如何手动 select C# 语言版本,请参阅 C# language versioning - Microsoft Docs。
有关此主题的更多信息,另请参阅堆栈溢出答案
这是 C# language versioning - Microsoft Docs 文章(截至 2022 年 3 月 11 日)的一部分,其中解释了不同目标框架的默认语言版本:
C# language versioning
The latest C# compiler determines a default language version based on your project's target framework or frameworks. Visual Studio doesn't provide a UI to change the value, but you can change it by editing the csproj file. The choice of default ensures that you use the latest language version compatible with your target framework. You benefit from access to the latest language features compatible with your project's target. This default choice also ensures you don't use a language that requires types or runtime behavior not available in your target framework. Choosing a language version newer than the default can cause hard to diagnose compile-time and runtime errors.
C# 10 is supported only on .NET 6 and newer versions. C# 9 is supported only on .NET 5 and newer versions. C# 8.0 is supported only on .NET Core 3.x and newer versions.
...
Defaults
The compiler determines a default based on these rules:
╔══════════════════╦═════════╦═════════════════════════════╗ ║ Target framework ║ version ║ C# language version default ║ ╠══════════════════╬═════════╬═════════════════════════════╣ ║ .NET ║ 6.x ║ C# 10 ║ ║ .NET ║ 5.x ║ C# 9.0 ║ ║ .NET Core ║ 3.x ║ C# 8.0 ║ ║ .NET Core ║ 2.x ║ C# 7.3 ║ ║ .NET Standard ║ 2.1 ║ C# 8.0 ║ ║ .NET Standard ║ 2.0 ║ C# 7.3 ║ ║ .NET Standard ║ 1.x ║ C# 7.3 ║ ║ .NET Framework ║ all ║ C# 7.3 ║ ╚══════════════════╩═════════╩═════════════════════════════╝
我做了以下并解决了我的问题:
在解决方案目录中创建一个名为“Directory.Build.props”的文件并写入以下代码:
<Project> <PropertyGroup> <LangVersion>latest</LangVersion> </PropertyGroup> </Project>
删除了.vs文件夹(它隐藏在解决方案目录中)
重启 Visual Studio
2021
原因:您可能针对 .NET Standard 2.0,它使用 C# 7.3 .
修复: 在项目的 属性下, 单击 应用程序 面板并选择 .NET Standard 2.1 作为目标框架.
经过上述更改后,Visual Studio2019 将自行修复该问题,无需LangVersion
设置。
您必须在 *.csproj 文件的 PropertyGroup 之一中忘记此标记。
<LangVersion>8.0</LangVersion>
如果您安装 ReSharper,它会自动为您修改 csproj 文件;)
检查您在两台机器上的配置是否有效(Debug/Release、x64/Any CPU)。这也可能导致此错误。