Visual Studio如何确定项目C#版本?版本信息存储于何处?
关于C#语言版本设置与项目文件的疑问解答
这是个挺常见的场景,我来帮你理清楚背后的逻辑:
为什么修改语言版本后.csproj文件没变化?
因为你的项目目标框架是**.NET 4.6.2**,而C# 6.0正是该框架对应的默认语言版本。当你选择的语言版本和目标框架的默认版本一致时,Visual Studio不会在.csproj文件中添加额外的<LangVersion>配置节点——只有当你指定的语言版本和框架默认版本不一致时(比如在.NET 4.6.2里强行用C# 5.0,或者尝试用更高版本的C#),这个配置才会被写入项目文件。
Visual Studio如何识别语言版本?
VS是通过内置的目标框架与C#版本映射规则来自动识别的,这个规则集成在MSBuild工具链里,不需要在项目文件中显式声明:
- .NET 4.5 对应 C# 5.0
- .NET 4.6/4.6.1/4.6.2 对应 C# 6.0
- 更高版本的.NET框架(比如.NET 4.7对应C# 7.0,.NET 5+对应匹配的C#主版本)也有对应的默认映射
如何让语言版本变更显式体现在.csproj中?
如果需要强制指定某个语言版本(比如想在.NET 4.6.2中使用C# 7.0的部分特性),你可以手动在.csproj的<PropertyGroup>节点下添加:
<LangVersion>7.0</LangVersion>
这时再修改语言版本,就能在项目文件中看到对应的变动了。
内容的提问来源于stack exchange,提问作者Koushik
相关产品推荐
相关产品推荐

