Visual Studio 2022编译错误CS1900:设置WarningLevel为5触发报错求助
解决CS1900:警告级别必须在0-4范围内的问题
问题原因
你遇到的CS1900错误,核心原因是:在.NET 5及更高版本的SDK项目中,WarningLevel属性的有效值仍限定为0-4,而你试图设置的5对应的是C# 9及后续版本的分析级别,该级别需要通过AnalysisLevel属性配置,而非传统的WarningLevel。
虽然官方文档提到C# 9有对应级别5的警告,但此处的“级别”指的是分析级别,并非WarningLevel属性的取值范围。
解决方案
方法1:使用AnalysisLevel替代WarningLevel(推荐)
修改你的project.csproj文件,将所有<WarningLevel>5</WarningLevel>替换为<AnalysisLevel>5</AnalysisLevel>,示例如下:
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> <DebugType>full</DebugType> <TreatWarningsAsErrors>False</TreatWarningsAsErrors> <NoWarn>;NU1701</NoWarn> <AnalysisLevel>5</AnalysisLevel> <Optimize>True</Optimize> <WarningsAsErrors>;NU1605</WarningsAsErrors> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'"> <DebugType>full</DebugType> <TreatWarningsAsErrors>False</TreatWarningsAsErrors> <NoWarn>;NU1701</NoWarn> <AnalysisLevel>5</AnalysisLevel> <WarningsAsErrors>;NU1605</WarningsAsErrors> </PropertyGroup>
AnalysisLevel的取值对应关系:
5:对应C# 9的所有警告规则6:对应C# 10的所有警告规则7:对应C# 11的所有警告规则latest:自动使用当前SDK支持的最高分析级别
方法2:调整WarningLevel为有效值(不推荐)
若坚持使用WarningLevel,只能将其值设为0-4中的一个,但此方式无法启用C# 9新增的警告规则,因此不推荐。
验证修改
保存csproj文件后,重新加载项目并编译,CS1900错误会消失,同时C# 9的对应警告会正常启用。
内容的提问来源于stack exchange,提问作者Labat
相关产品推荐
相关产品推荐

