2009-06-21 16 views
74

C'è un modo per disabilitare l'avviso specifico di MSBuild (ad es. MSB3253) quando si esegue MSBuild dalla riga di comando? Il mio script di build chiama MSBuild.exe molto seguente modo:Come sopprimere l'avviso specifico di MSBuild

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

ho scoperto che posso sopprimere C# avvertenze (ad esempio CS0618) utilizzando un altro parametro per msbuild.exe:

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

Tuttavia , questo approccio non funziona per gli avvisi di MSBuild. Forse c'è un'altra proprietà magica da impostare?

Sto usando .NET 3.5 e VS2008.

risposta

28

Secondo il thread this nel forum MSDN Gli avvisi di MSBuild non possono essere eliminati.

+13

Nota: questa risposta è corretta per errori da MSBuild (con prefisso "MSB"), come richiesto dall'OP. Se Google ti ha portato qui e vuoi sopprimere gli errori del compilatore (ad esempio "CS2008"), puoi fare quello che ha fatto OP: '/ p: nowarn = 2008' (elimina il numero" CS "dal numero) –

+1

Ti capita di sapere se questo è ancora il caso? –

+0

MSDN docs on/nowarn [qui] (http://msdn.microsoft.com/en-us/library/7f28x9z3.aspx). Msbuild passa questa variabile a csc.exe in una parte della sua destinazione CoreCompile. –

46

Sono riuscito a sopprimere il livello di avviso con /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

Non penso che funzioni se il livello di avviso per ciascun progetto nella soluzione è maggiore di 0. – si618

+2

Sì, giusto. È come girare il problema del motore nella tua auto usando il nastro sul cruscotto :-) – cacau

+0

Ho appena provato con MSBuild 15.4.8.50001, e/p: WarningLevel = 0 NON sopprime l'avvertimento MSBuild MSB3227. – Thought

18

Per MSB3253 si può solo impostare nel file di progetto (* .csproj) che causano tale avvertimento.

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

Questa risposta copre anche MSB3270. Molto utile quando si utilizza un resolver di assemblaggio personalizzato per gestire carichi di assembly specifici della piattaforma. – MOverlund

+10

C'è un elenco completo di queste impostazioni magiche da qualche parte in MS ..? – ATV

+0

Potresti scrivere maggiori dettagli su come dovrebbe essere fatto? quale file? dovrebbe essere modificato? Funziona per MSB8012? – Gayane

6

Per coloro Googling questo momento (come me): la prossima MSBuild 15.0 (per essere rilasciato con Visual Studio 2017, presumo) finalmente implement the /NoWarn option per sopprimere avvertenze specifiche (così come /WarnAsError per trattare sia specifiche avvertenze o tutti gli avvertimenti come errori).

Problemi correlati