Ver Mensaje Individual
  #2 (permalink)  
Antiguo 29/06/2009, 16:14
Coxara
 
Fecha de Ingreso: junio-2009
Mensajes: 47
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: CS0117: 'SqlServer_Connection' no contiene una definición para 'SQL_Update

Cada vez que el compilador detecta algún error en uno de los fuentes a compilar genera un mensaje informando de ello en el que indica en qué fichero de código fuente y en qué posición exacta del mismo (línea y columna) lo ha detectado. Por ejemplo, si en la columna 3 de la línea 7 de un fuente llamado ej.cs se llama a un método con nombre completo A.K() inexistente, se mostrará un mensaje como:

ej.cs(7,3): error CS0117: 'A' does not contain a definition for 'K'

Nótese que del fichero sólo se da su nombre y ello podría no identificarlo unívocamente si se compilaron a la vez varios con el mismo nombre pero pertencientes a directorios diferentes. Para solucionar esto puede usarse la opción /fullpaths, con lo que de los mensajes de error incluirían siempre la ruta completa de los ficheros defectuosos. Por ejemplo, si el fichero del ejemplo anterior se encontraba en C:\Ejemplo, al compilarlo con esta opción se mostraría el mensaje de error así:

C:\Ejemplo\ej.cs(7,3): error CS0117: 'A' does not contain a definition for 'K'

Hay veces que el compilador detecta que se han escrito en el fuente ciertas secciones de tal manera que sin ser erróneas son cuanto menos sospechosas (ya sea por ser absurdas, por prestarse a confusión, etc), y en esos casos lo que hace es emitir mensajes de aviso. Por ejemplo, si en la definición del tipo A del fuente prueba.cs se hubiese incluido:

static void Main(int x)
{}

En principio es una definición de método perfectamente válida. Sin embargo, como se parece mucho a una definición de punto de entrada pero no es válida como tal, el compilador generará el mensaje de aviso que sigue para informar de ello al usuario por si acaso éste lo que quería hacer era definir un punto de entrada y se equivocó:

prueba.cs(7,14): warning CS0028: 'A.Main(int)' has the wrong signature to be an entry point

Como se ve, la estructura de los mensajes de aviso es muy similar a la de los mensajes de error y sólo se diferencia de ésta en que incluye warning en vez de error tras el indicador de posición en el fuente. Incluso como a estos, la opción /fullpaths también les afecta y provoca que se muestren las rutas de los fuentes al completo.

Una diferencia importante entre avisos y errores es que la aparición de mensajes de los segundos durante la compilación aborta la generación del binario, mientras que la aparición de los primeros no (aunque en ambos casos nunca se aborta la compilación sino que tras mostrarlos se sigue analizando los fuentes por si pudiesen detectarse más errores y avisos) Ahora bien, también puede forzarse a que ello ocurra con los de aviso pasando al compilador el flag /warnaserror, con lo que se conseguiría que todo mensaje de aviso se muestrase como error. Ello puede resultar útil porque fuerza a escribir los fuentes de la manera más fiable e inteligentemente posible.

En el laod opuesto, puede que haya ciertos tipos de mensajes de aviso de los que no se desea siquiera que se informe en tanto que la información que aportan ya se conoce y se sabe que no afectará negativamente al programa. En esos casos puede usarse la opción /nowarn indicando como valores suyos los códigos asociados a los mensaje de aviso que no se desea que se reporten. El código asociado a cada tipo de mensaje de aviso se es la palabra de la forma CS<código> que se muestra tras warning en el mensaje de aviso. Así, para compilar el prueba.cs del ejemplo anterior sin que se genere el mensaje de aviso arriba mostrado puede hacerse:

csc prueba.cs /nowarn:0028

En realidad los ceros incluidos a la izquierda del código del aviso en los mensajes de aviso son opcionales, por lo que la compilación anterior es equivalente a:

csc prueba.cs /nowarn:28

Si desea obtener la lista completa de todos los tipos de mensaje de aviso y error con sus respectivos códigos puede consultar dentro de la documentación del .NET Framework SDK en Visual Studio.NET -> Visual Basic and Visual C# -> Visual C# Language -> C# Compiler Options -> Compiler Errors CS0001 to CS9999