Как подавить определенное предупреждение MSBuild

Можно ли отключить определенное предупреждение MSBuild (например, MSB3253) при запуске MSBuild из командной строки? Моя сборка script вызывает msbuild.exe следующим образом:

msbuild.exe MySolution.sln /t:Rebuild /p:Configuration=Release

Я выяснил, что могу подавить предупреждения С# (например, CS0618), используя другой параметр для msbuild.exe:

msbuild.exe MySolution.sln /t:Rebuild /p:Configuration=Release /p:NoWarn=0618

Однако этот подход не работает для предупреждений MSBuild. Может быть, есть другое волшебное свойство?

Я использую .NET 3.5 и VS2008.

Ответ 1

Мне удалось подавить уровень предупреждения с помощью /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

Ответ 2

В соответствии с этот поток в форуме MSDN. Предупреждения MSBuild не могут быть подавлены.

Ответ 3

Для 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>

Ответ 4

Для тех, кто сейчас работает (как и я): предстоящий MSBuild 15.0 (будет выпущен с Visual Studio 2017, я полагаю), наконец, реализовать /NoWarn, чтобы подавить определенные предупреждения (а также /WarnAsError для обработки определенных предупреждений или всех предупреждений как ошибок).