web-dev-qa-db-ja.com

特定の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:NoWarn=0618

ただし、このアプローチはMSBuild警告では機能しません。設定する別の魔法のプロパティがありますか?

.NET 3.5とVS2008を使用しています。

88
Andrew

/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
53
Yag

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>
30

MSDNフォーラムの this threadによると、MSBuildの警告は抑制できません。

30
Albic

これをグーグルで操作する人(私のように):今後のMSBuild 15.0(Visual Studio 2017でリリースされる予定です)は最終的に /NoWarnオプションを実装する 特定の警告を抑制する(同様に)特定の警告またはすべての警告をエラーとして扱う/WarnAsErrorとして)。

10
EM0