2012-04-04 49 views
7

Tengo un proyecto con más de 5000 cadenas de recursos. Casi todos ellos tienen puntos en su identificador.Suprimir "El nombre del recurso no es un identificador válido"

Estamos cambiar a la generación automática de clases de tipo fuerte, y por supuesto, a causa de los periodos, vemos unos pocos miles de advertencias

El nombre del recurso 'bla' no es un identificador válido.

Sé que no es así, el generador cambia los periodos a los guiones bajos, y todo está bien.

¿Puedo suprimir la advertencia? No parece tener un número asociado a #pragma de distancia.

+0

La respuesta es "no". Y dado que no podemos cambiar las teclas (nuestra localización no funciona), estoy atascado. – Stu

Respuesta

6

Creo que puedo reproducir, aunque no es cristalino en la pregunta. Project + Properties, Resources y escribe un nombre de recurso de cadena como "foo.bar" activa esta advertencia.

Sí, no puede suprimir esta advertencia, la genera el diseñador de recursos en el IDE. Cuando genera automáticamente el código del archivo Properties \ Resources.resx al archivo Properties \ Resources.Designer.cs. Mire el archivo .resx y marque el atributo "nombre" en los elementos <data>. Un período en el valor del atributo va a activar la advertencia.

Un search-and-replace cuidadosamente elaborado con regexp podría solucionar eso al convertir los puntos en guiones bajos. Eso me da personalmente dos problemas, solo escribiría un pequeño programa que usa XDocument. También verifique si todavía necesita este código generado automáticamente, parece que lo está reemplazando.

+0

No, pasamos de la reflexión manual a las clases generadas automáticamente. El cambio de nombre no funcionará, ya que tenemos una cadena de herramientas i18n completa que desactiva estos identificadores. Suspiro ... – Stu

+0

Eso no me ayuda a ayudarte. La advertencia generada por el diseñador de recursos sigue siendo mi explicación favorita. –

+0

Debería haber sido más claro, supongo. A menos que a alguien se le ocurra una solución alternativa, te daré la recompensa de todos modos. – Stu

3

Esto suprimirá todas las advertencias de un archivo .cs dados con

#pragma warning disable 

También debe ser capaz de hacer clic derecho sobre la advertencia y luego haga clic en la Ayuda Mostrar error. Debe dar el número de advertencia exacto para que pueda suprimir esa advertencia para todo el proyecto yendo a las propiedades del proyecto, luego a la página de compilación e ingresándola en el cuadro de texto Suprimir advertencias.

Después de más investigaciones, parece que algunas advertencias no se pueden suprimir. Consulte los detalles en msdn sobre las opciones del compilador C#/nowarn http://msdn.microsoft.com/en-us/library/7f28x9z3.aspx

Uno de ellos es el Advertencia del compilador (nivel 1) CS2029 que hace referencia a la advertencia "no es un identificador válido" que está recibiendo. Puede confirmar aún más que no se puede suprimir visitando los detalles en la Advertencia del compilador (nivel1) CS2029 aquí http://msdn.microsoft.com/en-us/library/878y1894.aspx

+0

Los archivos .cs se generan automáticamente. No hay un número de advertencia – Stu

+0

No es 2029. No hay número./W0 no tiene efecto. – Stu

2

Una solución alternativa realmente horrible en este caso sería desacoplar el código generado a partir de la herramienta de recursos:

Digamos que el nombre de su archivo de recursos es Resources.resx

  1. Abra la herramienta de recursos haciendo doble clic en Resources.resx en el proyecto dentro de Visual Studio.

  2. Establezca su modificador de acceso apropiado para el ámbito de código generado que está utilizando.

  3. En Windows Explorer, vaya a la carcasa directorio de su Resources.resx y Resources.Designer.cs de código. (Cualquiera de navegar manualmente o hacer clic derecho en la carpeta del proyecto/espacio de nombres y seleccionando la opción "Abrir carpeta en el Explorador de Windows")

  4. Renombrar Resources.Designer.cs a Resources.cs

  5. Volver a la herramienta de recursos en Visual Studio y establezca el modificador de acceso a "No generación de código"

  6. Guardar, cierre la herramienta de recursos

  7. Haga clic en el "Sh icono de "Todos los archivos" en la parte superior de la ventana del explorador de soluciones. El Resources.cs archivo debe aparecer en la misma carpeta que Resources.resx en forma de fantasma

  8. Haga clic derecho sobre Resources.cs y seleccione "Incluir en el Proyecto"

la las advertencias ahora deberían desaparecer. Por supuesto, la inconveniencia de este trabajo es que tendrá que hacer todos estos pasos cada vez que modifique el archivo de recursos.

0

Esta advertencia se produce si el nombre del recurso no es un identificador válido (por ejemplo, contiene un espacio o '-') y la generación de recursos fuertemente tipada está activada para el archivo. Esta es una advertencia en lugar de un error porque el nombre del recurso fuertemente tipeado cambiará a un nombre válido (por ejemplo, "a b" se cambiará a "a_b"), pero el nombre del recurso seguirá siendo "a b".

Para corregir este error

Usted debe primero cambiar el nombre del recurso a un identificador válido, si es posible. Si esa no es una opción válida, deshabilite la generación de código de recursos fuertemente tipados para este archivo .resx. Para hacerlo, seleccione el archivo .resx en el Explorador de soluciones y borre la propiedad Herramienta personalizada.

FUENTE: http://msdn.microsoft.com/en-us/library/ms228672(v=vs.80).aspx

+0

y qué pasa si necesito el código (.Designer.cs) y no puedo cambiar el nombre del nombre del recurso ... ?? hay alguna otra solución ...? – shashwat

Cuestiones relacionadas