Как подавить конкретное предупреждение MSBuild
Есть ли способ отключить определенное предупреждение MSBuild (например, MSB3253) при запуске MSBuild из командной строки? Мой скрипт сборки вызывает msbuild.exe следующим образом:
msbuild.exe MySolution.sln /t:Rebuild /p:Configuration=Release
Я обнаружил, что могу подавить предупреждения C# (например, CS0618), используя другой параметр для msbuild.exe:
msbuild.exe MySolution.sln /t:Rebuild /p:Configuration=Release /p:NoWarn=0618
Тем не менее, этот подход не работает для предупреждений MSBuild. Может быть, нужно установить еще одно магическое свойство?
Я использую.NET 3.5 и VS2008.
7 ответов
Мне удалось подавить уровень предупреждения с /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>
Согласно этой теме на форуме MSDN предупреждения MSBuild не могут быть подавлены.
Более поздние версии MSBuild поддерживают это через командную строку ( как указано в EM0) или с помощью свойств:
<PropertyGroup>
<MSBuildWarningsAsMessages>$(MSBuildWarningsAsMessages);MSB3253</MSBuildWarningsAsMessages>
</PropertyGroup>
Подробнее см. В этом комментарии.
Официальной документации по этому поводу я не нашел, но он упоминается вVerifyFileHash
документация по заданию.
Альтернатива: добавьте это в.csproj.
<PropertyGroup>
<NoWarn>$(NoWarn);MSB3253</NoWarn>
</PropertyGroup>
Для тех, кто гуглит это сейчас (как и я): грядущий MSBuild 15.0 (который должен быть выпущен вместе с Visual Studio 2017, я полагаю) наконец-то реализует /NoWarn
возможность подавления определенных предупреждений (а также /WarnAsError
обрабатывать либо конкретные предупреждения, либо все предупреждения как ошибки).
На момент написания этой публикации (2021 г.) документы Microsoft рекомендуют
DisabledWarnings
, это сработало для меня:
<PropertyGroup>
<DisabledWarnings>3568</DisabledWarnings>
</PropertyGroup>
Обратите внимание, что префикс «MS» опущен.