6

Tenía un archivo de recursos llamado Localize.resx, que contiene cadenas en inglés. Lo copié y pegué dentro de la misma carpeta (App_GlobalResources), VS creó una copia, cambié el nombre de la copia a Localize.sl.resx y el original a Localize.en.resx. Ahora todo lo que se encuentra en los archivos de código subyacente (Localize.en.designer.cs) ha desaparecido. Al eliminar el archivo del diseñador y seleccionar Ejecutar herramienta personalizada, se genera un nuevo archivo de diseñador completamente en blanco.Archivos de recursos (RESX) estropeados

Todavía tengo todas mis cadenas en ambas resx pero los archivos de diseñador se han ido (vacíos) por lo que la aplicación no se compila.

¿Alguna sugerencia?

Esto está dentro de Vs 2010 con la solución ASP.NET MVC.

Respuesta

8

Esto es lo que ASP.NET documentation dice acerca de los archivos de recursos.

No habla específicamente sobre el código detrás de los archivos de diseñador generados sobre la marcha, pero si lee cuidadosamente el texto en negrita, básicamente dice que necesita el archivo base sin idioma especificado y, teniendo en cuenta que tiene sentido que solo esto archivo incluirá código autogenerado.

"Cuando crea archivos de recursos, comienza creando un archivo .resx base. Para cada idioma que desee admitir, cree un nuevo archivo que tenga el mismo nombre de archivo. Pero en el nombre, incluya el idioma . o de la lengua y la cultura (nombre de la cultura) Para obtener una lista de los nombres de cultivo, ver la clase CultureInfo Por ejemplo, es posible crear los siguientes archivos:.

• WebResources.resx

el archivo de recursos de base. Este es el archivo de recursos predeterminado (de respaldo)

• Web Resources.es.resx

Un archivo de recursos para español.

• WebResources.es-mx.resx

Un archivo de recursos para el español (México) específicamente.

• WebResources.de.resx

Un archivo de recursos para el alemán."

En realidad nunca me he dado cuenta de esto antes, pero cuando fui a comprobar mis viejos proyectos, vi que todos ellos tienen el archivo de base y luego específicos del lenguaje. Así que solo lo corrigí para seguir esa convención y funciona ahora.

+0

Sí, pero solo un archivo de todos con el mismo nombre de archivo raíz genera el código del diseñador automático generado y ese es el archivo con sin especificador de idioma Tiene sentido porque en el código cuando lo usas, solo usas un nombre de clase (suponiendo que estamos hablando de recursos globales y esos están en el espacio de nombres de Recursos, como por defecto). – mare

+0

Lo siento @mare, me equivoqué :) resx es la estructura de "tipo de xml" que contiene las cadenas. sin embargo, usted está bien, solo hay un código detrás, ese se usa para vincular el resx con el administrador de recursos. ALTOOUUUGGHHH ... genera un archivo cs para cada resx (todos vacíos excepto el predeterminado) – Nealv

2

Si yo fuera usted, me gustaría:

crear un nuevo archivo resx; abre el antiguo; Presione ctrl + a en el antiguo; Presione ctrl + v en el nuevo; Guarde el nuevo; Eliminar el anterior; Cambie el nombre al nuevo :)

Esto debería resolver el problema silenciosamente rápido. También puede verificar si los archivos cs no están excluidos del archivo haciendo clic en el botón Mostrar todo

+0

serie de pasos loco :)) –

+0

Ya sabes, esto realmente funciona hasta el paso donde renombro el nuevo archivo, lo que estaba antes de Resource1.resx y tenía su archivo de diseñador lleno de código, después Cambiando el nombre a Localize.sl.resx, todo el código en el archivo del diseñador se ha ido. – mare

+0

hmmm, raro, es su herramienta personalizada configurada para GlobalResourceProxyGenerator. @edit También verifique si elimina el anterior, que en su carpeta de windows (marque fuera de VS) su anterior resx AND cs Y las clases de diseñador son eliminadas. Creo que todavía están allí, pero solo excluidos de su proyecto en VS – Nealv

9

Tuve el mismo problema: el archivo Designer.cs no está presente para algunos archivos resx.

La solución fue la de establecer las propiedades de los archivos resx:

Build Action - Embedded Resource 
Custom Tool - PublicResXFileCodeGenerator 
+1

Buena solución .... – MDDDC

0

Lo siento por el uso de este para escribir un comentario. Mi reputación en realidad es menor que 50 = (pero creo que esto también podría ser importante.

Esto se refiere a la respuesta de Alvis: Tu solución fue el truco. Pero también tuve que modificar el modificador de acceso de propiedades en la base . archivo de código del diseñador de interno a público de lo contrario tiene XmlParseExceptions al intentar acceder a la resx en XAML

Editar:.. por lo que este referes a C#/WPF podría ser diferente en ASP.NET

Cuestiones relacionadas