如何让使用Microsoft.CodeAnalysis.NetAnalyzers的.NET 4.5项目构建失败?
问题核心原因
你遇到的规则不触发构建错误的问题和.NET 4.5本身无关,IDE前缀的规则(如IDE0010)属于代码样式类规则,默认仅在IntelliSense阶段运行,不会在构建过程中执行,该行为是设计如此,与项目目标框架版本无关。
Microsoft.CodeAnalysis.NetAnalyzers 的适配说明
- 该NuGet包包含两类规则:
CA前缀的代码质量/安全规则:支持.NET Framework 4.5版本项目,默认会在构建阶段执行,配置为错误级别时会直接打断构建IDE前缀的代码样式规则:默认仅在Visual Studio编辑器的IntelliSense阶段生效,所有版本.NET项目都默认不会在构建时校验
- .NET 4.5版本的项目仅兼容5.x及更早版本的
Microsoft.CodeAnalysis.NetAnalyzersNuGet包,6.0及以上版本的包依赖的MSBuild工具链已经不支持旧版非SDK风格的.NET Framework项目,安装时需要明确指定版本号。 - 如果需要让IDE前缀的规则也在构建阶段生效,只需在项目的
.csproj文件中添加以下配置即可,该配置要求Visual Studio 2019 16.10及以上版本支持,与项目目标框架无关:
<PropertyGroup> <EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild> </PropertyGroup>
验证方法
你可以替换测试规则为CA前缀的规则,例如在.editorconfig中添加:
dotnet_diagnostic.CA1822.severity = error
之后编写符合触发条件的代码(例如不引用任何实例成员的实例方法),重新生成项目即可在「生成」分类下看到错误,构建会正常失败。
替代方案
如果你的开发环境版本过低不支持上述配置,StyleCop Classic完全可以作为替代方案,它原生适配.NET Framework 4.5版本的项目,所有规则默认都会在构建阶段触发,也支持自定义规则严重级别。
内容的提问来源于stack exchange,提问作者Sam Leach
相关产品推荐
相关产品推荐

