Подтвердить что ты не робот

Как подавить определенное предупреждение 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.

4b9b3361

Ответ 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 для обработки определенных предупреждений или всех предупреждений как ошибок).