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

news2025/1/11 5:51:56

一些文字来自于 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 即可。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1232367.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(二)汇编语句组成

一个完整的 RISC-V 汇编程序有多条 语句&#xff08;statement&#xff09; 组成。 一条典型的 RISC-V 汇编 语句 由 3 部分组成&#xff1a; 1.标签 List item label&#xff08;标签&#xff09;: 标签是标识程序位置的记号。通常定义一个名称然后加上":"后缀。…

【图像分类】【深度学习】【轻量级网络】【Pytorch版本】MobileNets_V2模型算法详解

【图像分类】【深度学习】【轻量级网络】【Pytorch版本】MobileNets_V2模型算法详解 文章目录 【图像分类】【深度学习】【轻量级网络】【Pytorch版本】MobileNets_V2模型算法详解前言MobleNet_V2讲解反向残差结构(Inverted Residuals)兴趣流形(Manifold of interest)线性瓶颈层…

Python - Wave2lip 环境配置与 Wave2lip x GFP-GAN 实战 [超详细!]

一.引言 前面介绍了 GFP-GAN 的原理与应用&#xff0c;其用于优化图像画质。本文关注另外一个相关的项目 Wave2lip&#xff0c;其可以通过人物视频与自定义音频进行适配&#xff0c;改变视频中人物的嘴型与音频对应。 二.Wave2Lip 简介 Wave2lip 研究 lip-syncing 以达到视频…

PyTorch微调终极指南2:提升模型的准确性

作为一名机器学习从业者&#xff0c;你可能经常会发现自己处于这样一种情况&#xff1a;你正在针对特定任务微调预先训练的模型&#xff0c;但已经达到了无法进一步提高模型准确性的地步。 在本文中&#xff0c;我们将探讨可用于提高模型准确性的各种技术和策略。 这些方法旨在…

代码随想录算法训练营Day36 —— 435. 无重叠区间、763.划分字母区间、56. 合并区间

435. 无重叠区间 思路&#xff1a; 按照左边排序&#xff0c;按照452引爆气球的思路即可&#xff0c;统计重叠区间个数就是最小删除个数&#xff0c; 直接改点就好。 代码&#xff1a; //手搓 class Solution { private:static bool cmp(const vector<int>& a, c…

从0开始学习JavaScript--深入探究JavaScript类型化数组

JavaScript类型化数组是一种特殊的数组类型&#xff0c;引入了对二进制数据的更底层的操作。这种数组提供了对内存中的二进制数据直接进行读写的能力&#xff0c;为处理图形、音频、视频等大规模数据提供了高效的手段。本文将深入探讨JavaScript类型化数组的基本概念、常见类型…

代码随想录算法训练营第六十天丨 单调栈03

84.柱状图中最大的矩形 思路 单调栈 本地单调栈的解法和接雨水的题目是遥相呼应的。 为什么这么说呢&#xff0c;42. 接雨水 (opens new window)是找每个柱子左右两边第一个大于该柱子高度的柱子&#xff0c;而本题是找每个柱子左右两边第一个小于该柱子的柱子。 这里就涉…

机器人制作开源方案 | 智能照科植物花架

作者&#xff1a;付菲菲、于海鑫、王子敏单位&#xff1a;黑河学院指导老师&#xff1a;索向峰、李岩 1. 概述 1.1设计背景​ 随着时代的发展&#xff0c;城市化脚步加快、城市人口密度越来越大、城市生活节奏快压力大作息难成规律。城市建筑建筑面积迅速增加、而绿…

SpringCloud 微服务全栈体系(十五)

第十一章 分布式搜索引擎 elasticsearch 五、RestClient 操作文档 为了与索引库操作分离&#xff0c;再次参加一个测试类&#xff0c;做两件事情&#xff1a; 初始化 RestHighLevelClient酒店数据在数据库&#xff0c;需要利用 IHotelService 去查询&#xff0c;所以注入这个接…

Pandas数据集的合并与连接merge()方法_Python数据分析与可视化

数据集的合并与连接 merge()解析merge()的主要参数 merge()解析 merge()可根据一个或者多个键将不同的DataFrame连接在一起&#xff0c;类似于SQL数据库中的合并操作。 数据连接的类型 一对一的连接&#xff1a; df1 pd.DataFrame({employee: [Bob, Jake, Lisa, Sue], grou…

HDCTF2023 - Reverse方向全WP

文章目录 [HDCTF 2023]easy_re[HDCTF 2023]easy_asm[HDCTF 2023]fake_game[HDCTF 2023]enc[HDCTF 2023]double_code[HDCTF 2023]买了些什么呢[HDCTF2023]basketball [HDCTF 2023]easy_re UPX壳&#xff0c;脱壳 一个base64编码。 [HDCTF 2023]easy_asm ida打开后可以看到xor 10…

深入了解千兆光模块和万兆光模块

光模块是一种光电转换设备&#xff0c;在发射端&#xff0c;光模块能够将设备产生的电信号转换成光信号从而实现在光纤介质中传输&#xff0c;在接收端光模块将接收到的光信号再次转换为设备能够识别的电信号&#xff0c;从而实现高速、精准的数据传输。例如&#xff0c;在线视…

V100 GPU服务器安装CUDA教程

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

常见树种(贵州省):009楠木、樟木、桂木种类

摘要&#xff1a;本专栏树种介绍图片来源于PPBC中国植物图像库&#xff08;下附网址&#xff09;&#xff0c;本文整理仅做交流学习使用&#xff0c;同时便于查找&#xff0c;如有侵权请联系删除。 图片网址&#xff1a;PPBC中国植物图像库——最大的植物分类图片库 一、楠木 …

python实现炫酷的屏幕保护程序

shigen日更文章的博客写手&#xff0c;擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长&#xff0c;分享认知&#xff0c;留住感动。 上次的文章如何实现一个下班倒计时程序的阅读量很高&#xff0c;觉得也很实用酷炫&#xff0c;下边是昨天的体验…

Leetcode刷题详解——删除并获得点数

1. 题目链接&#xff1a;740. 删除并获得点数 2. 题目描述&#xff1a; 给你一个整数数组 nums &#xff0c;你可以对它进行一些操作。 每次操作中&#xff0c;选择任意一个 nums[i] &#xff0c;删除它并获得 nums[i] 的点数。之后&#xff0c;你必须删除 所有 等于 nums[i] …

如何使用http来获取thingsbord中的设备数据

背景 有个读者问我,他想做tb的二次开发,想要通过一个接口来查询设备的遥测数据。 于是我给他写了这篇文章。 具体实现 由于他使用的是cloud版本,于是我使用cloud来做演示 文档的接口 https://thingsboard.cloud/swagger-ui/#/telemetry-controller/getTimeseriesUsing…

一道简单的积分题目

题目如下图&#xff1a; 解法1&#xff1a; 解法2&#xff1a; 解法3&#xff1a; 错误做法&#xff1a; 在 x ∈ ( 0 , ∞ ) 上有 ln ⁡ x < x &#xff0c;令 f ( x ) ln ⁡ x 1 x 2 &#xff0c; g ( x ) &#xff1d; x 1 x 2 ∴ f ( x ) < g ( x ) &#x…

【汇编】“转移”综述、操作符offset、jmp指令

文章目录 前言一、转移综述1.1 :背景&#xff1a;1.2 转移指令1.3 转移指令的分类按转移行为根据指令对IP修改的范围不同 二、操作符offset2.1 offset操作符是干什么的&#xff1f;标号是什么&#xff1f; 2.2 nop是什么&#xff1f; 三、jmp指令3.1 jmp指令的功能3.2 jmp指令&…

Vue移动 HTML 元素到指定位置 teleport 标签

teleport 标签&#xff1a;用于将组件中的 HTML 元素移动到任意的位置。 使用 teleport 标签移动 HTML 元素&#xff1a; <!-- 将 teleport 中的内容移动到 body 标签中 --> <teleport to"body"><div><h3>我是第三层组件的标题</h3>…