2009-12-04 14 views
14

quiero compilar App_GlobalResources/Strings.resx en mi montaje (y eventualmente utilizar ensamblados satélite para Strings.es.resx, Strings.fr.resx, etc. .) pero aparece el siguiente error una vez que se publica la aplicación:Cómo utilizar los recursos mundiales compilados en ASP.NET MVC

"No se pudo cargar el archivo o ensamblado 'App_GlobalResources' o una de sus dependencias. El sistema no puede encontrar el archivo especificado."

Pasos para reproducir:

  1. Crear un nuevo proyecto de ASP.NET MVC.
  2. Agregue una carpeta App_GlobalResources y un archivo Strings.resx.
  3. conjunto de acciones acumulación del archivo a 'Recurso incrustado'
  4. Añadir una cadena para Strings.resx y usarlo en HomeController.Index(), por ejemplo, ViewData["Message"] = Strings.MyTest
  5. F5 para depurar, funciona bien.
  6. Publicar en IIS y (desde Strings.resx se excluye de la publicación) obtendrá el error anterior en el sitio publicado.

¿Pueden los proyectos de ASP.NET MVC utilizar recursos de cadenas compilados en la dll y, de ser así, qué estoy haciendo mal?


Actualización: Aquí es lo que veo en Reflector: String Resources

¿Por qué es el ResourceManager no encontrar ellos? ¿No se supone que fallback to the main assembly por defecto?

Respuesta

23

Aquí es un buen punto de partida http://odetocode.com/Blogs/scott/archive/2009/07/16/resource-files-and-asp-net-mvc-projects.aspx

I fijó un proyecto al igual que usted ha mencionado y tiene precisamente el mismo error cuando desplegué a IIS6. Cambiando Custom Tool a PublicResXFileCodeGenerator y Custom Tool Namespace a Resources según las sugerencias de Scott, lo aclaró.

También seguiría el ejemplo de Scott con respecto a la eliminación de App_GlobalResources pero lo hice funcionar bien. Eso podría ser una cuestión de preferencia personal.

+0

¡Excelente respuesta! Funciona genial. Gracias. –

+0

_Gran_ enlace! ¡Gracias! –

+0

@ w0rd-driben, tengo build un assembly1 que contiene globalresource y es público cuando publicas, pero cuando utilizas este ensamblado en otro proyecto y usas código: "<% $ Resources: General, SomeKey%>" no funciona ... cualquier ideas? Gracias – Mhmd

Cuestiones relacionadas