这可能是因为编译器默认将不同的C#语言版本用于不同的目标框架。
要覆盖默认的C#语言,请添加到项目文件(如所建议的那样):
<PropertyGroup>
<LangVersion>8.0</LangVersion>
</PropertyGroup>
要么:
<PropertyGroup>
<LangVersion>latest</LangVersion>
</PropertyGroup>
请参见C#语言的版本默认C#语言版本不同的目标框架以及如何手动选择C#语言的版本。
另请参见堆栈溢出答案C#8是否支持.NET Framework?有关此主题的更多信息。
这是C#语言版本控制文章的一部分:
C#语言版本控制
最新的C#编译器根据项目的目标框架或多个框架确定默认的语言版本。这是因为C#语言可能具有依赖于每个.NET实现中不可用的类型或运行时组件的功能。这也可以确保对于构建项目的目标,默认情况下都会获得最高兼容的语言版本。
本文中的规则适用于Visual Studio 2019或.NET Core 3.0 SDK附带的编译器。默认情况下,Visual Studio 2017安装或更早的.NET Core SDK版本中的C#编译器将C#7.0定位为目标。
默认值
编译器根据以下规则确定默认值:
--------------------------------------------------------
Target framework | version | C# language version default
--------------------------------------------------------
.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
--------------------------------------------------------
覆盖默认
如果必须显式指定C#版本,则可以采用以下几种方法:
- 手动编辑您的项目文件。
- 在子目录中设置多个项目的语言版本。
- 配置-langversion编译器选项。
编辑项目文件
您可以在项目文件中设置语言版本。例如,如果您明确希望访问预览功能,则添加如下元素:
<PropertyGroup>
<LangVersion>preview</LangVersion>
</PropertyGroup>
该值preview
使用编译器支持的最新可用预览C#语言版本。
配置多个项目
要配置多个项目,可以创建包含该元素的Directory.Build.props文件<LangVersion>
。您通常在解决方案目录中执行此操作。将以下内容添加到解决方案目录中的Directory.Build.props文件中:
<Project>
<PropertyGroup>
<LangVersion>preview</LangVersion>
</PropertyGroup>
</Project>
现在,包含该文件的目录的每个子目录中的构建都将使用预览C#版本。有关更多信息,请参阅关于定制构建的文章。