C#,怎么修改(VS)Visual Studio 2022支持的C#版本

一些文字来自于 Microsoft . (只需要读下面的红色文字即可!)

1 C# 语言版本控制

最新的 C# 编译器根据项目的一个或多个目标框架确定默认语言版本。 Visual Studio 不提供用于更改值的 UI,但可以通过编辑 .csproj 文件来更改值。 此默认选择可确保使用与目标框架兼容的最新语言版本。 你将从访问与项目目标兼容的最新语言功能中受益。 此默认选择还可确保不会使用需要类型或运行时行为在目标框架中不可用的语言。 选择比默认版本更高的语言版本可能导致难以诊断编译时和运行时错误。

C# 11 仅在 .NET 7 及更高版本上受支持。 C# 10 仅在 .NET 6 及更高版本上受支持。 C# 9 仅在 .NET 5 及更高版本上受支持。

有关 Visual Studio 版本支持的 NET 版本的详细信息,请查看 Visual Studio 平台兼容性页面。 有关 Visual Studio for Mac 版本支持的 NET 版本的详细信息,请查看 Visual Studio for Mac 平台兼容性页面。 查看 C# 的 Mono 页面,了解 Mono 与 C# 版本的兼容性。

2 默认值

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

目标 版本 C# 语言版本的默认值

.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

如果你的项目是以具有相应预览语言版本的预览框架为目标,那么使用的语言版本是预览语言版本。 你可在任何环境中使用该预览版提供的最新功能,而不会影响面向已发布 .NET Core 版本的项目。

重要

Visual Studio 2017 的新项目模板向新项目文件添加了一个 <LangVersion>latest</LangVersion> 条目。 如果你升级这些项目的目标框架,则它们替代默认行为。 更新 .NET SDK 时,应从项目文件中删除 <LangVersion>latest</LangVersion>。 然后项目将使用建议用于目标框架的编译器版本。 可更新目标框架以访问更新的语言功能。

3 替代默认值

如果必须明确指定 C# 版本,可以通过以下几种方式实现:

手动编辑项目文件。

为子目录中的多个项目设置语言版本。

配置 LangVersion 编译器选项。

提示

可以在"项目属性"页查看 Visual Studio 中的语言版本。 在"生成"选项卡下,"高级"窗格将显示所选版本。

若要了解当前使用的语言版本,请在代码中添加 #error version(区分大小写)。 这样做可使编译器报告编译器错误 CS8304,并显示一条消息,其中包含正在使用的编译器版本和当前选择的语言版本。 有关详细信息,请参阅 #error(C# 参考)。

4 编辑项目文件

编辑你的项目文件比如 demo.proj 文件;
可在项目文件中设置语言版本。 例如,如果你明确希望访问预览功能,请添加如下元素:

退出 VS,找到 任何一行 </PropertyGroup>,在后面添加下面三行 xml,重新进入 VS 即可。

XML 复制代码
<PropertyGroup>
   <LangVersion>preview</LangVersion>
</PropertyGroup>

值 preview 使用编译器支持的最新可用的预览 C# 语言版本。

配置多个项目

若要配置多个目录,可以创建包含 元素的 Directory.Build.props 文件。 通常是在解决方案目录中完成这件事。 将以下内容添加到解决方案目录中的 Directory.Build.props 文件:

<Project>

<PropertyGroup>

<LangVersion>preview</LangVersion>

</PropertyGroup>

</Project>

包含该文件的目录的所有子目录中的版本都将使用 C# 预览版。 有关详细信息,请查看自定义生成。

5 C# 语言版本引用

下表显示当前所有 C# 语言版本。 如果编译器较旧,它可能不一定能识别每个值。 如果安装的是最新的 .NET SDK,则可以访问列出的所有内容。

值 含义

preview 编译器接受最新预览版中的所有有效语言语法。

latest 编译器接受最新发布的编译器版本(包括次要版本)中的语法。

latestMajor

或 default 编译器接受最新发布的编译器主要版本中的语法。

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) 中所含的语法。

相关推荐
Blockbuater_drug13 小时前
Dify 1.18 本地部署实战:Windows + WSL2 + Docker,从零跑到本地可用
windows·docker·容器·dify·大模型应用平台
cc_yy_zh14 小时前
笔记本关机自动重启解决办法
windows
椒颜皮皮虾྅15 小时前
让文档不止于文字:DeploySharp + PP-Structure,打通版面分析与表格重建
开发语言·学习·c#·.net·cuda
AlanAshley17 小时前
Windows 错误代码 0x80284018:可能原因与解决办法
windows
椒颜皮皮虾྅17 小时前
一套 C# 接口,解锁四类视觉任务:DeploySharp 分类、分割、关键点与旋转框实战
开发语言·分类·c#
罗迪尼亚的熔岩18 小时前
联合kuka机器人, 海康visonmaster 的手眼9点标定方法
机器人·c#·工业相机·标定
2501_9159090618 小时前
Windows 打开 Xcode 工程,编译调试 Xcode 项目并和 Mac 同事协作
ide·windows·vscode·macos·ios·个人开发·xcode
她说彩礼65万18 小时前
C# TaskCompletionSource
java·开发语言·c#
vortex519 小时前
Windows Server IIS 运维配置指南:架构、身份、安全与排障
运维·windows·架构
如若1231 天前
Windows SSH + Headscale/Tailscale 组网及免密登录完整配置教程
运维·windows·ubuntu·ssh·内网穿透