2009-09-22 8 views
11

estoy tratando de cargar un resx en mi página web .NET usando:ResourceManager intentar cargar .resources no Resx presentar

ResourceManager rm = new ResourceManager("Project.Resource", Assembly.GetExecutingAssembly()); 

El archivo Resource.resx está en los App_LocalResources carpeta y está dispuesto a ser incrustado en el ensamblaje en la construcción.

Cuando intento acceder a la resx usando:

rm.GetString("key"); o rm.GetString("key", culture);

me sale un mensaje de error:

No se pudo encontrar ningún recurso apropiados para la cultura especificada o la cultura neutral Asegúrese de que los "Project.Resource.resources" se insertan correctamente o vinculado en asamblea "Proyecto" en tiempo de compilación, o que todos los ensamblados satélite requeridos se pueden cargar y totalmente firmado.

Observe los .resources ... alguna idea sobre lo que está pasando aquí?

+0

¿No se ha creado también un archivo de diseñador? –

Respuesta

3

Creo que la forma en que usa ResourceManager es incorrecta. Vea esto post.

También tenga en cuenta que cuando abre el símbolo del sistema de Visual Studio & ejecute resgen.exe, indica que se usa para convertir archivos de recursos de un formato a otro (es decir, resx a recursos). Creo que necesitará convertir su archivo a recursos de resx & y luego cargarlo usando resourceManager.

+1

Gracias por ponerme en el camino correcto ... No debería estar usando ResourceManager Terminé usando la sintaxis <% $ Resources: filename, key%> en mi página en su lugar –

1

Agregue la extensión .resx explícitamente.

También puede utilizar la clase generada automáticamente y usar sus propiedades si es adecuado para su proyecto.

+0

Si agrego .resx a "Project.Resource" obtengo el mismo error pero para el archivo Project.Resource.resx.resources –

+0

Lo siento, me olvidé de que su .resx está en App_LocalResources. No se aplica ninguna de mis publicaciones ... –

3

No estoy seguro de qué versión de .NET Framework está utilizando.

Intente cambiar la forma de dar vida al ResourceManager.

ResourceManager rm = 
    new ResourceManager("Project.Resource", 
         System.Reflection.Assembly.Load("App_LocalResources")); 

Debería funcionar.

Esto también se expone como una propiedad estática de la clase .designer.cs generada automáticamente del administrador de resorce de hormigón.

13

Para cargar Resx en ResourceManager necesita especificar espacio de nombres

var rm = new ResourceManager("Namespace.ResxName", Assembly.GetAssembly()); 

o puede obtener de forma gratuita si ResourceManager establece modificador de acceso dentro Managed Editor de recursos al interior o público, después de que VS generará ResxName.Designer.cs

var rm = ResxName.ResourceManager; 
+1

+ 1 para el método de acceso a los recursos a través del código del Diseñador – Boggin

4

Hay manera sorprendentemente sencilla de recursos de lectura por cadena:

ResourceNamespace.ResxFileName.ResourceManager.GetString("ResourceKey") 

Es una solución limpia y elegante para la lectura de recursos por parte de las claves en las que no se puede utilizar "notación de puntos" (por ejemplo, cuando la llave de recursos es persistió en la base de datos).

Cuestiones relacionadas