从命令行运行MSBuild时,有没有办法禁用特定的MSBuild警告(例如MSB3253)?我的构建脚本以下列方式调用msbuild.exe:
msbuild.exe MySolution.sln /t:Rebuild /p:Configuration=Release
我发现我可以使用msbuild.exe的另一个参数来抑制C#警告(例如CS0618):
msbuild.exe MySolution.sln /t:Rebuild /p:Configuration=Release /p:NoWarn=0618
但是,此方法不适用于MSBuild警告。也许还有另一个魔法属性可以设置?
我正在使用.NET 3.5和VS2008。
答案 0 :(得分:52)
我设法用/p:WarningLevel=X
msbuild.exe MySolution.sln /t:Rebuild /p:WarningLevel=0 /p:Configuration=Release
^^^^^^^^^^^^^^^^^
Warning
Level Meaning
-------- -------------------------------------------
0 Turns off emission of all warning messages.
1 Displays severe warning messages
2 Displays level 1 warnings plus certain, less-severe warnings, such
as warnings about hiding class members
3 Displays level 2 warnings plus certain, less-severe warnings, such
as warnings about expressions that always evaluate to true or false
4 (the default) Displays all level 3 warnings plus informational warnings
答案 1 :(得分:29)
根据MSDN论坛中的this帖子,无法抑制MSBuild警告。
答案 2 :(得分:29)
对于MSB3253,您只需设置导致此类警告的项目文件(* .csproj)。
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<!-- some code goes here -->
<ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
None
</ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
<!-- some code goes here -->
</PropertyGroup>
答案 3 :(得分:10)
对于那些谷歌搜索现在(像我一样):即将推出的MSBuild 15.0(将与Visual Studio 2017一起发布,我推测)将最终implement the /NoWarn
option来禁止特定警告(以及/WarnAsError
到将特定警告或所有警告视为错误。)
答案 4 :(得分:1)
最新版本的MSBuild通过命令行(as mentioned by EM0)或通过以下属性支持此功能:
<PropertyGroup>
<MSBuildWarningsAsMessages>$(MSBuildWarningsAsMessages);MSB3253</MSBuildWarningsAsMessages>
</PropertyGroup>
有关详细信息,请参见this comment。
我没有找到有关此文档的官方文档,但it is mentioned in the VerifyFileHash
task documentation。
答案 5 :(得分:1)
替代: 将此添加到.csproj。
<PropertyGroup>
<NoWarn>$(NoWarn);MSB3253</NoWarn>
</PropertyGroup>