大型旧项目可能存在大量的 Warning,在编译之后 Visual Studio 会给出大量的警告。Visual Studio 中可以直接点掉警告,然而如果是通过命令行 msbuild 编译的,那如何不要让警告输出呢?
在使用 msbuild 命令编译项目的时候,如果存在大量的警告,输出量会非常多。如果我们使用 msbuild 命令编译来定位项目的编译错误,那么这些警告将会导致我们准确查找错误的效率明显降低。
当然,这种问题的首选解决方案是 —— 真的修复掉这些警告!!!
那么可以用什么方式临时关闭 msbuild 命令编译时的警告呢?可以输入如下命令:
msbuild /p:WarningLevel=0
这样在调试编译问题的时候,因警告而造成的大量输出信息就会少很多。
不过需要注意的是,这种方式不会关闭所有的警告,实际上这关闭的是 csc 命令的警告(CS
开头)。关于 csc 命令的警告可以参见:-warn (C# Compiler Options) - Microsoft Docs。于是,如果项目中存在 msbuild 的警告(MSB
开头),此方法依然还会输出,只不过如果是为了调试编译问题,那么依然会方便很多,因为 MSB
开头的警告会少非常多。
关于警告等级:
0
关闭所有的警告。1
仅显示严重警告。2
显示 1 级的警告以及某些不太严重的警告,例如有关隐藏类成员的警告。3
显示级别 2 警告以及某些不太严重的警告,例如关于始终评估为true
或false
的表达式的警告。4
默认值 显示所有 3 级警告和普通信息警告。
参考资料
- command line - How to suppress specific MSBuild warning - Stack Overflow
- command line - How to suppress all warnings using MSBuild - Stack Overflow
- visual studio 2013 - How to have MSBuild quiet output but with error/warning summary - Stack Overflow
- -warn (C# Compiler Options) - Microsoft Docs
- Suppress MSB4126
本文会经常更新,请阅读原文: https://dotnet-campus.github.io//post/suppress-all-warnings-for-msbuild.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 dotnet 职业技术学院 (包含链接: https://dotnet-campus.github.io/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 。