Come eliminare un avviso specifico di MSBuild


97

Esiste un modo per disabilitare l'avviso specifico di MSBuild (ad esempio MSB3253) quando si esegue MSBuild dalla riga di comando? Il mio script di build chiama msbuild.exe molto nel modo seguente:

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

Ho scoperto che posso sopprimere gli avvisi C # (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.

Risposte:


61

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

6
Si, come no. È come trasformare il problema del motore nella tua auto usando il nastro adesivo sul cruscotto :-)
cacau

Ho appena provato con MSBuild 15.4.8.50001 e / p: WarningLevel = 0 NON sopprime l'avviso MSBuild MSB3227.
Pensiero

2
L'ho provato e questo sopprimerà gli avvisi del compilatore (CS ..) ma non gli avvisi di MSBuild (MSB ...)
marsze

Questo è un trucco se ne hai davvero bisogno, ma puoi creare un Directory.Build.rsp adiacente al csproj in cui vuoi sopprimere questo avviso e aggiungere il contenuto "/ WarnAsMessage: MSBXXXX".
mjsabby

37

Per MSB3253 puoi semplicemente impostare nel file di progetto (* .csproj) che causi tale avviso.

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

5
Questa risposta copre anche MSB3270. Molto utile quando si utilizza un risolutore di assembly personalizzato per gestire i carichi di assembly specifici della piattaforma.
MOverlund

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

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

Solo per necro questo ... Ho fatto clic con il pulsante destro del mouse sul mio file * .csproj in Esplora soluzioni, ho fatto clic su "Scarica progetto", ho fatto clic con il pulsante destro del mouse su "Modifica". Quindi copiata questa sezione "ResolveAssembly" nel primo gruppo di proprietà alla fine (di solito dopo il tag TargetFrameworkProfile) e interrompe questo avviso
Steven Wood

31

Secondo questo thread nel forum MSDN, gli avvisi di MSBuild non possono essere eliminati.


21
Nota: questa risposta è corretta per gli errori di MSBuild (con prefisso "MSB"), come richiesto da OP. Se Google ti ha portato qui e desideri eliminare gli errori del compilatore (ad es. "CS2008"), puoi fare ciò che ha fatto OP: /p:nowarn=2008(togliere il "CS" dal numero)
Michael Haren

1
Ti capita di sapere se è ancora così?
Martin Ba

Documenti MSDN su / nowarn qui . Msbuild passa questa variabile a csc.exe in una parte della sua destinazione CoreCompile.
Dav Evans

Non sembra esserci un modo per sopprimere gli avvisi del compilatore roslyn e sopprimerli in MS-Build. "#pragma warning disable RCS1110 // Dichiara il tipo all'interno dello spazio dei nomi." con RCS eliminato riporta l'avviso del compilatore.
user1431356

11

Per coloro che cercano su Google questo ora (come me): l'imminente MSBuild 15.0 (che verrà rilasciato con Visual Studio 2017, presumo) implementerà/NoWarn finalmente l' opzione per sopprimere avvisi specifici (oltre /WarnAsErrora trattare avvisi specifici o tutti gli avvisi come errori) .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.