2009-06-21 10 views
74

Czy istnieje sposób wyłączenia określonego ostrzeżenia MSBuild (np. MSB3253) podczas uruchamiania MSBuild z wiersza poleceń? Mój build skrypt wywołuje msbuild.exe znacznie następujący sposób:Jak tłumić określone ostrzeżenie MSBuilda

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

ja dowiedziałem się, że mogę stłumić C# ostrzeżeń (np CS0618) za pomocą innego parametru dla msbuild.exe:

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

jednak , takie podejście nie działa w przypadku ostrzeżeń MSBuild. Może jest jeszcze inna magiczna właściwość do ustawienia?

Używam .NET 3.5 i VS2008.

Odpowiedz

28

Zgodnie z this wątek na forum MSDN Forum ostrzeżenia MSBuild nie mogą być wyłączone.

+13

Uwaga: ta odpowiedź jest poprawna w przypadku błędów z MSBuild (z prefiksem "MSB"), zgodnie z instrukcją OP. Jeśli Google cię tu sprowadził i chcesz stłumić błędy kompilatora (np. "CS2008"), możesz zrobić to, co zrobił OP: '/ p: nowarn = 2008' (usuń" CS "z numeru) –

+1

Czy zdajesz sobie sprawę? jeśli tak jest nadal? –

+0

Dokumenty MSDN na temat/nowarn [tutaj] (http://msdn.microsoft.com/en-us/library/7f28x9z3.aspx). Msbuild przekazuje tę zmienną do csc.exe w części jego celu CoreCompile. –

46

udało mi się wyciszyć poziom ostrzegawczy z /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ę, że to działa, jeśli skonfigurowano poziom ostrzeżenia dla każdego projektu w rozwiązaniu, który jest większy niż 0. – si618

+2

Tak - tak. To tak, jakby włączyć problem z silnikiem w samochodzie za pomocą taśmy na desce rozdzielczej :-) – cacau

+0

Po prostu wypróbowałem to z MSBuildem 15.4.8.50001, i/p: WarningLevel = 0 NIE tłumi MSBuild z ostrzeżeniem MSB3227. – Thought

18

Dla MSB3253 można 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> 
+3

Ta odpowiedź obejmuje również MSB3270. Bardzo przydatny, gdy używasz niestandardowego przelicznika złożenia do zarządzania obciążeniami dla poszczególnych platform. – MOverlund

+10

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

+0

Czy możesz napisać więcej szczegółów, jak to zrobić? który plik? należy zmodyfikować? Czy to działa dla MSB8012? – Gayane

6

Dla tych Googling to teraz (jak ja): nadchodząca MSBuild 15.0 (być zwolniony z Visual Studio 2017, jak sądzę) wreszcie implement the /NoWarn option będzie tłumić konkretne ostrzeżenia (jak również /WarnAsError traktować zarówno konkretne ostrzeżenia lub wszystkie ostrzeżenia jako błędy).

Powiązane problemy