2010-11-30 10 views
11

This has been asked, pero no fue respondido. La respuesta (use /warn:1) no funciona para msbuild.exe, solo csc.exe. Tal vez me falta algo entre csc y ​​msbuild?¿cómo puedo suprimir todas las advertencias de compilación y análisis de código de msbuild en la línea de comandos?

me gustaría para suprimir todos los avisos y advertencias del compilador de análisis de código (por ejemplo "La variable 'variableNameHere' es asignado pero su valor ..." o análisis de código Advertencia: CA1805: Microsoft.Performance: .. .) cuando estoy usando la línea de comandos msbuild. No quiero alterar el archivo de la solución. Hay varios cientos de mensajes de advertencia en la gran solución que estoy construyendo, arreglarlos está muy fuera del alcance de mi proyecto.

Intenté /v:quiet pero eso no funcionó.

¿Hay alguna manera de hacerlo a través de la línea de comandos?

Actualización: esto:

C:\WINDOWS\Microsoft.NET\Framework\v3.5\msbuild.exe C:\Dev\ReallyBigSolution.sln /p:NoWarn=true /p:NoWarn=CA1031

Absolutamente no funciona. Aún recibo cientos de advertencias, incluida la que bloqueé específicamente (CA1031).

El uso de /p:RunCodeAnalysis=Never o /p:RunCodeAnalysis=false aparentemente no suprime las advertencias o errores del análisis de código.

+0

Me pregunto dónde no hay interfaz de usuario para MSBuild? Parece que realmente podría usar uno. Adivinar en varios entornos es una pérdida de tiempo. – jcollum

+0

No necesita adivinar. Utilice VS, modifique las propiedades del proyecto (pestaña de compilación o de análisis de código) y luego vea qué cambios persisten en el archivo .csproj. El objetivo de msbuild es ser una herramienta de línea de comandos. – Brian

+0

@Brian: he consultado las páginas de propiedades de csproj y no veo nada acerca de estas advertencias de análisis de códigos. Creo que me rendiré. Perder demasiado tiempo en esto. Pensé que sería fácil, solo me faltaba una línea de comando. – jcollum

Respuesta

11

Puede utilizar nowarn bandera en el compilador, que corresponde a <NoWarn> propiedad en el archivo .csproj. Así que tal vez msbuild /p:NoWarn="37;68" apagará esos números de advertencia (no lo he probado).

o uso

http://msdn.microsoft.com/en-us/library/13b90fz7.aspx

para desactivar las advertencias por completo. No sé el nombre de la propiedad de inmediato, intente /p:Warn=0.

Editar: lea los comentarios hacia el final; parece que realmente deshacerse de todas estas advertencias no es posible.

+0

Sí, creo que eso funciona. Pero eso significa encontrar todos los números de advertencia que obtengo. Me gustaría simplemente decir "no me importan las advertencias" y terminar con esto. – jcollum

+0

Actualización de mi respuesta. – Brian

+0

actualización: tried/p: NoWarn = true y/p: NoWarn = CA1051 - no hay buenos resultados. Todavía recibe muchas otras advertencias. – jcollum

0

parece que es not possible ...

Warnings with MSB prefix are thrown by MSBuild. Currently, we can't suppress MSBuild warnings.

+0

Se aplica a algunos, pero no a todos: Cosas como CS0219 (La variable 'xxxxxx' está asignada pero su valor nunca se usa) no son errores de MSBuild, creo. – jcollum

+0

Es una advertencia del compilador, no una advertencia MSB. ¿Está transmitiendo argumentos ... ha comprobado esto ... http: //social.msdn.microsoft.com/Forums/en-US/msbuild/thread/94ae238b-e755-4023-a6cb-c113df841c82/ –

+0

Sí , Lo he leído Implica alterar la solución, por lo que especifiqué que no quería alterar el archivo .sln en la pregunta. Lo que estoy pidiendo es probablemente imposible/sadface – jcollum

1

que han intentado esto y no puede suprimir las advertencias o bien, a menos que hagan una lista en la propiedad/nowarn para msbuild.exe

4

Prueba esto:

msbuild.exe C:\Dev\BigSolution.sln /p:WarningLevel=0 /p:RunCodeAnalysis=false 
9

Sé que esto es un antiguo puesto pero me puso en el camino correcto y al agregar lo siguiente a mi llamada msbuild suprimió todas las advertencias y resultados a medida que construía el proyecto. Tengo esto en un archivo de proceso por lotes, así que la única salida que obtengo creo que son los resultados finales y cualquier mensaje que solicite con eco. El secreto estaba en el modificador/clp. Así que lo busqué y puse todos los que suprimen la producción.Cada uno se deshizo de más, pero todavía estaban las advertencias amarillas y cuando agregué el conmutador ErrorsOnly, no hubo más salida.

call msbuild /clp:NoSummary;NoItemAndPropertyList;ErrorsOnly /verbosity:quiet /nologo 
+0

Gracias, esto funciona perfectamente. – Czenda

Cuestiones relacionadas