Command line 如何抑制特定的MSBuild警告

Command line 如何抑制特定的MSBuild警告,command-line,msbuild,Command Line,Msbuild,从命令行运行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:N

从命令行运行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。

根据MSDN论坛中的线程,无法抑制MSBuild警告。

我已成功使用
/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

对于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>

调试
任意CPU
没有一个

对于那些现在用谷歌搜索的人(像我一样):即将发布的MSBuild 15.0(我想将与Visual Studio 2017一起发布)最终将禁止特定警告(以及
/warnaError
将特定警告或所有警告视为错误)。

更新版本的MSBuild通过命令行()或具有以下属性:


$(MSBuildWarningsAsMessages);MSB3253
有关详细信息,请参阅

我没有找到这方面的官方文档,但是。

备选方案: 将此添加到.csproj


美元(诺瓦恩);MSB3253

如果您已将解决方案中每个项目的警告级别配置为大于0,则我认为这不起作用。是的-对。这就像通过在仪表板上使用磁带来解决汽车中的电机问题:-)只使用MSBuild 15.4.8.50001进行了尝试,并且/p:WarningLevel=0不会抑制MSBuild警告MSB3227。我尝试了它,这将抑制编译器警告(CS…),但不会抑制MSBuild警告(MSB…)。如果您确实需要它,这是一个黑客程序,但是,您可以在要在中抑制此警告的csproj旁边创建一个目录.Build.rsp,并添加“/WarnAsMessage:MSBXXXX”的内容。注意:对于MSBuild(前缀为“MSB”)中的错误,此答案是正确的。如果谷歌把你带到这里,你想抑制编译器错误(例如“CS2008”),你可以像OP那样做:
/p:nowarn=2008
(去掉数字上的“CS”)你知道情况是否仍然如此吗?MSDN docs on/nowarn。Msbuild在其CoreCompile目标的一部分将此变量向下传递给csc.exe。似乎没有一种方法既可以抑制roslyn编译器警告,也可以抑制MS Build中的警告。”#pragma warning disable RCS1110//Declare type in namespace。'with RCS drop将返回编译器警告。此答案还包括MSB3270。当您使用自定义程序集解析程序来管理特定于平台的程序集加载时,非常方便。在MS…,是否有这些神奇设置的完整列表?请您写下更多详细信息,说明如何执行此操作?哪个文件?应该修改吗?这对MSB8012有用吗?只是为了。。。我在解决方案资源管理器中右键单击了我的*.csproj文件,单击了“卸载项目”,右键单击了“编辑”。然后将此“ResolveAssembly”部分复制到末尾的第一个属性组中(通常在TargetFrameworkProfile标记之后),并停止此警告