c# - varios - visual studio no compila cambios
"Trate todas las advertencias como errores, excepto..." en Visual Studio (8)
En Visual Studio, puedo seleccionar la opción "Tratar advertencias como errores" para evitar que mi código se compile si hay advertencias. Nuestro equipo usa esta opción, pero hay dos advertencias que nos gustaría mantener como advertencias.
Hay una opción para suprimir las advertencias, pero QUEREMOS que se muestren como advertencias, por lo que no funcionará.
Parece que la única forma de obtener el comportamiento que queremos es ingresar una lista de cada número de advertencia de C # en el cuadro de texto "Advertencias específicas", a excepción de los dos que queremos tratar como advertencias.
Además del dolor de cabeza por mantenimiento, la mayor desventaja de este enfoque es que algunas advertencias no tienen números, por lo que no se pueden referenciar explícitamente. Por ejemplo, "No se pudo resolver esta referencia. No se pudo ubicar el conjunto ''Datos ...''"
¿Alguien sabe de una mejor manera de hacer esto?
Aclarando a aquellos que no ven de inmediato por qué esto es útil. Piensa en cómo funcionan la mayoría de las advertencias. Te dicen que algo está un poco apagado en el código que acabas de escribir. Se necesitan unos 10 segundos para repararlos, y eso mantiene la base de código más limpia.
La advertencia "obsoleta" es muy diferente de esto. A veces arreglarlo significa simplemente consumir una nueva firma de método. Pero si una clase entera está obsoleta y tiene un uso disperso a través de cientos de miles de líneas de código, podría llevar semanas o más arreglarla. No quiere que la construcción se rompa por tanto tiempo, pero definitivamente QUIERE ver una advertencia al respecto. Esto no es solo un caso hipotético: esto nos ha sucedido a nosotros.
Las advertencias literales de "advertencia" también son únicas. A menudo quiero verificarlo, pero no quiero romper la compilación.
¿Por qué no simplemente tener una regla que dice "Quien revise el código con alguna advertencia dentro de él que no sea 612, 1030, 1701 o 1702 debe ir a la pizarra y escribir cien veces" No volveré a verificar el código con advertencias no permitidas. ''''
¿Por qué quieres seguir viendo advertencias de que no estás tratando como errores? Estoy confundido acerca de por qué es deseable, ya sea que los arregles o no.
¿Funcionarían dos archivos de compilación / solución diferentes? O una secuencia de comandos para copiar uno y luego modificar el nivel de advertencia / advertencia. Parece que tal vez quieras algunas ejecuciones del compilador para graznar, pero otras quieres continuar.
Por lo tanto, diferentes conmutadores de compilación parecen una buena forma de hacerlo. Podría hacer esto con diferentes objetivos: uno etiquetado como depurar o liberar y los otros etiquetados de forma adecuada acerca de las advertencias.
/ warnaserror / warnaserror-: 618
Estoy usando advertencias de tratamiento como errores.
En casos excepcionales, cuando aparece una advertencia aceptable (es decir, hace referencia al miembro obsoleto o falta documentación en clases de serialización XML), debe suprimirse explícitamente con #pragma disable (y, opcionalmente, podría proporcionarse un motivo para no tener un código limpio). como comentario a lo largo de)
La presencia de esta directiva también permite descubrir, quién aceptó esta violación de advertencia (por acción de "culpa" de control de versión) en caso de que haya algunas preguntas.
Me parece que el problema de raíz es realmente una combinación de sus advertencias de tratamiento como errores, cuando claramente no lo son, y su política aparente de permitir los controles que violan esto. Como dices, quieres poder seguir trabajando a pesar de una advertencia. Solo mencionó algunas advertencias que desea ignorar, pero ¿qué pasa si alguien más en el equipo causa otro tipo de advertencia, que le tomaría la misma cantidad de tiempo corregir? ¿No te gustaría poder ignorar eso también?
La solución lógica sería: 1) No permitir registros si el código no se compila (lo que significa que los que crearon las advertencias tendrán que corregirlos, ya que, en efecto, rompieron la compilación), o 2) tratan las advertencias como advertencias. Cree dos configuraciones de compilación, una que trate las advertencias como errores, que se pueden ejecutar regularmente para garantizar que el código sea libre de advertencias, y otra, que solo las trate como advertencias, y le permita trabajar incluso si alguien más introdujo una advertencia.
advertencia pragma (referencia C #)
La advertencia pragma se puede usar para habilitar o deshabilitar ciertas advertencias.
http://msdn.microsoft.com/en-us/library/441722ys(VS.80).aspx
o más específicamente, en tu caso:
/ warnaserror / warnaserror-: 612,1030,1701,1702
esto debería tratar todas las advertencias como errores a excepción de los que están en su lista separada por comas
Puede agregar un WarningsNotAsErrors
-tag en el archivo del proyecto.
<PropertyGroup>
...
...
<WarningsNotAsErrors>618,1030,1701,1702</WarningsNotAsErrors>
</PropertyGroup>
Nota: 612
y 618
son advertencias acerca de Obsoleto, no sé la diferencia, pero el proyecto en el que estoy trabajando es el informe Obsoleto con advertencia 618.