为什么我在C#中使用record类型时会出现编译错误?
问题原因
报错是因为项目的.csproj配置没有指定正确的.NET目标框架和C#语言版本,C# 9的record关键字仅在C# 9及以上版本编译器支持,而C# 9默认绑定.NET 5及以上版本的目标框架。
解决步骤
- 修改项目配置文件
打开TestProject目录下的TestProject.csproj,将文件内容调整为如下配置:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net5.0</TargetFramework> <LangVersion>9.0</LangVersion> </PropertyGroup> </Project>
<TargetFramework>指定为net5.0,确保项目使用.NET 5作为目标运行时<LangVersion>显式指定C#语言版本为9.0,避免编译器默认使用低版本规则
重载OmniSharp服务
在VS Code中按下快捷键Ctrl+Shift+P(Mac系统为Cmd+Shift+P),搜索并执行OmniSharp: Restart OmniSharp,等待C#扩展服务重启完成,语法报错会自动消失。验证编译
终端执行以下命令清理并重建项目,确认无编译报错:
dotnet clean dotnet build
额外说明
后续创建.NET 5项目时,可以直接在创建命令中指定目标框架,避免手动修改配置:
dotnet new console -n TestProject -f net5.0
内容的提问来源于stack exchange,提问作者user16227143
相关产品推荐
相关产品推荐

