2009-06-21 12 views
74

¿Hay alguna manera de deshabilitar la advertencia de MSBuild específica (por ejemplo, MSB3253) al ejecutar MSBuild desde la línea de comandos? Mi escritura de la estructura msbuild.exe llama mucho la siguiente manera:Cómo suprimir la advertencia de MSBuild específica

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

he descubierto que puedo suprimir las advertencias de C# (por ejemplo CS0618) usando otro parámetro para msbuild.exe:

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

Sin embargo , este enfoque no funciona para las advertencias de MSBuild. Tal vez hay otra propiedad mágica para establecer?

Estoy usando .NET 3.5 y VS2008.

Respuesta

28

Según this conversación en el foro de MSDN Las advertencias de MSBuild no se pueden suprimir.

+13

Nota: esta respuesta es correcta para los errores de MSBuild (con el prefijo "MSB"), como lo hizo OP. Si Google lo trajo aquí y desea suprimir los errores del compilador (por ejemplo, "CS2008"), puede hacer lo que OP hizo: '/ p: nowarn = 2008' (quitar el" CS "del número) –

+1

¿Sabe usted? si este sigue siendo el caso? –

+0

MSDN documentos en/nowarn [aquí] (http://msdn.microsoft.com/en-us/library/7f28x9z3.aspx). Msbuild pasa esta variable a csc.exe en parte de su objetivo CoreCompile. –

46

He conseguido suprimir el nivel de advertencia 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

No creo que esto funcione si ha configurado el nivel de advertencia para cada proyecto en la solución para que sea mayor que 0. – si618

+2

Sí - correcto. Eso es como cambiar el problema del motor en su automóvil usando una cinta en el tablero :-) – cacau

+0

Acabo de probarlo con MSBuild 15.4.8.50001, y/p: WarningLevel = 0 NO suprime MSBuild warning MSB3227. – Thought

18

Para MSB3253 sólo se puede establecer en el archivo de proyecto (* .csproj) que causar tal advertencia.

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

Esta respuesta también cubre MSB3270. Es muy útil cuando se usa una resolución de ensamblaje personalizada para administrar cargas de ensamblaje específicas de la plataforma. – MOverlund

+10

¿Hay alguna lista completa de estos ajustes mágicos en algún lugar de MS ...? – ATV

+0

¿Podrían escribir más detalles sobre cómo hacer esto? ¿Qué archivo? debe ser modificado? Funciona esto para MSB8012? – Gayane

6

Para aquellos googlear esto ahora (como yo): la próxima MSBuild 15.0 (que se publicará con Visual Studio 2017, creo) finalmente implement the /NoWarn option para suprimir advertencias específicas (así como /WarnAsError para tratar cualquiera de las advertencias específicas o todas las advertencias como errores).

Cuestiones relacionadas