Visual Studio 2017项目设置无法抑制警告,求非逐个标记的替代方案
解决方案级警告抑制的替代方法
嘿,针对你在Visual Studio 2017(15.6.2)里遇到的警告抑制不生效问题,这里有几个无需逐个项目配置的解决方案级方法,你可以试试:
使用Directory.Build.props全局配置文件
这是MSBuild提供的全局配置方式,放在解决方案根目录下就会自动被所有子项目导入。创建一个名为Directory.Build.props的文件,内容示例如下:<Project> <PropertyGroup> <!-- 在这里添加要抑制的警告编号,用逗号分隔 --> <NoWarn>CA1001,CS0169,CS0649</NoWarn> <!-- 如果需要将某些警告视为错误,也可以在这里配置 --> <!-- <WarningsAsErrors>CS0219</WarningsAsErrors> --> </PropertyGroup> </Project>保存后重新生成解决方案,所有项目都会遵循这个配置里的警告规则。
通过MSBuild命令行参数全局抑制
如果你习惯用命令行构建解决方案,可以直接在构建命令里指定要抑制的警告:msbuild YourSolutionName.sln /p:NoWarn=CA1001,CS0169这个参数会覆盖所有项目的本地警告设置,实现全局抑制。
针对Roslyn分析器警告使用.editorconfig
如果你的警告来自Roslyn代码分析器(比如以CA开头的警告),可以在解决方案根目录创建.editorconfig文件,配置特定警告的级别:# 抑制CA1001警告 dotnet_diagnostic.CA1001.severity = none # 可以添加更多规则 dotnet_diagnostic.CS0169.severity = noneVisual Studio会自动识别这个文件,应用到所有项目的设计时和构建时分析中。
另外,你可以检查一下这些细节:
- 确认警告编号的正确性,不同类型的警告前缀不同(CS是C#编译器警告,CA是代码分析警告,VB是VB.NET警告等)
- 有些项目可能本地设置了
NoWarn,会覆盖全局配置,你可以检查项目属性里的设置是否和全局配置冲突
既然你已经在visualstudio.com提交了工单,也可以留意官方的回复,但上面这些方法应该能帮你快速解决当前的问题。
内容的提问来源于stack exchange,提问作者Mithgroth




