Jak pominąć określone ostrzeżenie programu MSBuild


98

Czy istnieje sposób na wyłączenie określonego ostrzeżenia programu MSBuild (np. MSB3253) podczas uruchamiania programu MSBuild z wiersza polecenia? Mój skrypt kompilacji wywołuje msbuild.exe w następujący sposób:

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

Dowiedziałem się, że mogę pominąć ostrzeżenia C # (np. CS0618), używając innego parametru dla msbuild.exe:

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

Jednak to podejście nie działa w przypadku ostrzeżeń programu MSBuild. Może jest jeszcze jedna magiczna właściwość do ustawienia?

Używam .NET 3.5 i VS2008.

Odpowiedzi:


62

Udało mi się obniżyć poziom ostrzegawczy za pomocą /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
Nie sądzę, żeby to
zadziałało,

6
Tak, jasne. To tak, jakby
wyłączyć

Właśnie wypróbowałem to z MSBuild 15.4.8.50001 i / p: WarningLevel = 0 NIE pomija ostrzeżenia MSBuild MSB3227.
Myślałem, że

2
Wypróbowałem i to
pominie

To jest hack, jeśli naprawdę tego potrzebujesz, ale możesz utworzyć Directory.Build.rsp obok csproj, w którym chcesz pominąć to ostrzeżenie, i dodać zawartość „/ WarnAsMessage: MSBXXXX”.
mjsabby

38

W przypadku MSB3253 możesz po prostu ustawić w pliku projektu (* .csproj), które powodują takie ostrzeżenie.

  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <!-- some code goes here -->
    <ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
        None
    </ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
    <!-- some code goes here -->
  </PropertyGroup>

5
Ta odpowiedź dotyczy również MSB3270. Bardzo przydatne, gdy używasz niestandardowego programu do rozpoznawania złożeń do zarządzania obciążeniami zestawów specyficznymi dla platformy.
MOverlund,

16
Czy gdzieś w MS .. jest pełna lista tych magicznych ustawień?
ATV

Czy mógłbyś napisać więcej szczegółów, jak należy to zrobić? który plik? należy zmodyfikować? Czy to działa w przypadku MSB8012?
Gayane

Po prostu nekro to ... Kliknąłem prawym przyciskiem myszy plik * .csproj w Eksploratorze rozwiązań, kliknąłem „Zwolnij projekt”, kliknąłem prawym przyciskiem myszy „Edytuj”. Następnie skopiowałem tę sekcję „ResolveAssembly” do pierwszej grupy właściwości na końcu (zwykle po tagu TargetFrameworkProfile) i zatrzymuje to ostrzeżenie
Steven Wood

31

Zgodnie z tym wątkiem na forum MSDN ostrzeżeń MSBuild nie można pominąć.


21
Uwaga: ta odpowiedź jest poprawna w przypadku błędów z programu MSBuild (z prefiksem „MSB”), zgodnie z pytaniem OP. Jeśli Google cię tu sprowadził i chcesz ukryć błędy kompilatora (np. „CS2008”), możesz zrobić to, co zrobił OP: /p:nowarn=2008( usuń „CS” z numeru)
Michael Haren

1
Czy wiesz, czy nadal tak jest?
Martin Ba

Dokumenty MSDN na / nowarn tutaj . Msbuild przekazuje tę zmienną do csc.exe w części jego celu CoreCompile.
Dav Evans

Wydaje się, że nie ma sposobu, aby jednocześnie pomijać ostrzeżenia kompilatora Roslyn i pomijać je w MS-Build. '#pragma warning disable RCS1110 // Deklaruj typ wewnątrz przestrzeni nazw.' po usunięciu RCS przywraca ostrzeżenie kompilatora.
user1431356

11

Dla tych, którzy szukają w Google teraz (jak ja): nadchodzący MSBuild 15.0 (przypuszczam, że zostanie wydany z Visual Studio 2017) w końcu zaimplementuje /NoWarnopcję pomijania określonych ostrzeżeń (a także /WarnAsErrortraktowania określonych ostrzeżeń lub wszystkich ostrzeżeń jako błędów) .


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.