[转] C# 语言版本控制

当使用新版本的语法糖时,编译器报错了:

 

参考:https://learn.microsoft.com/zh-cn/dotnet/csharp/language-reference/configure-language-version

配置项目文件,添加如下蓝色配置后正常:

  <PropertyGroup>
    <LangVersion>latest</LangVersion>
  </PropertyGroup>

默认值

编译器根据以下规则确定默认值:

目标版本C# 语言版本的默认值
.NET 8.x C# 12
.NET 7.x C# 11
.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 全部 C# 7.3

C# 语言版本引用

下表显示当前所有 C# 语言版本。 较旧的编译器可能无法理解每个值。 如果安装了最新的 .NET SDK,则可以访问列出的所有内容。

含义
preview 编译器接受最新预览版中的所有有效语言语法。
latest 编译器接受最新发布的编译器版本(包括次要版本)中的语法。
latestMajor
或 default
编译器接受最新发布的编译器主要版本中的语法。
12.0 编译器只接受 C# 12 或更低版本中所含的语法。
11.0 编译器只接受 C# 11 或更低版本中包含的语法。
10.0 编译器只接受 C# 10 或更低版本中所含的语法。
9.0 编译器只接受 C# 9 或更低版本中所含的语法。
8.0 编译器只接受 C# 8.0 或更低版本中所含的语法。
7.3 编译器只接受 C# 7.3 或更低版本中所含的语法。
7.2 编译器只接受 C# 7.2 或更低版本中所含的语法。
7.1 编译器只接受 C# 7.1 或更低版本中所含的语法。
7 编译器只接受 C# 7.0 或更低版本中所含的语法。
6 编译器只接受 C# 6.0 或更低版本中所含的语法。
5 编译器只接受 C# 5.0 或更低版本中所含的语法。
4 编译器只接受 C# 4.0 或更低版本中所含的语法。
3 编译器只接受 C# 3.0 或更低版本中所含的语法。
ISO-2
或 2
编译器只接受 ISO/IEC 23270:2006 C# (2.0) 中所含的语法。
ISO-1
或 1
编译器只接受 ISO/IEC 23270:2003 C# (1.0/1.2) 中所含的语法。

备注

使用 default 值指定 LangVersion 与省略 LangVersion 选项不同。 指定 default 会使用编译器支持的语言的最新版本,而不考虑目标框架。 例如,从当前版本的 Visual Studio 版本 2022 生成面向 .NET 6 的项目时,如果未指定 LangVersion,则使用 C# 10,但如果 LangVersion 设置为 default,则使用 C# 11。

posted on 2024-03-05 10:05  z5337  阅读(9)  评论(0编辑  收藏  举报