asp.net satellite-assembly

asp.net - Agregar ensamblaje satelital en un sitio web desplegado precompilado



satellite-assembly (2)

Para utilizar GetGlobalResourceObject() en Visual Studio 2008, debo copiar un archivo .resx en la carpeta App_GlobalResources de Visual Studio. Una vez que la aplicación está precompilada, los archivos de recursos se compilan en los conjuntos satélites correspondientes y se implementan en la carpeta /bin/ por nombres de cultura. Todo esto funciona bien.

Sin embargo, no puedo agregar nuevos conjuntos satélites después de que la aplicación haya sido precompilada. Lo que he hecho fue:

  1. Creó un conjunto satélite:

    resgen resources.applicationresources.es-ES.resx resources.applicationresources.es-ES.resources al / t: lib / culture: es-ES /embed:resources.applicationresources.es-ES.resources /out:App_GlobalResources.resources.dll

  2. Creé la carpeta /bin/es-ES/ y desplegé el archivo .dll allí.

Desafortunadamente, GetGlobalResourceObject() no reconoce el conjunto de satélites recién agregado, que recae en el recurso predeterminado (inglés). Parece que no hay nada malo con el archivo de recursos porque si copio el mismo archivo App_GlobalResources en App_GlobalResources y luego compilo la aplicación, todo funciona bien.

¿Qué me estoy perdiendo? Por cierto, mi tipo de proyecto es un sitio web y no un proyecto de aplicación web.


(De Comentario por @ksa)

Una cosa que puede salir mal es una ruta de espacio de nombres incorrecta en la DLL producida por resgen, puede usar ILDASM o Reflector para comparar los espacios de nombres en las DLL de trabajo y el DLLS generado que no funciona. Luego puede cambiar su línea de comando resgen para generar con el espacio de nombres correcto.


Intente conectarse al evento AssemblyResolve en AppDomain.CurrentDomain y ver si está buscando el ensamblaje. Si lo busca, todo lo que necesita hacer es mantener una lista de los conjuntos cargados dinámicamente y sus rutas.

Una nota sobre AssemblyResolve, si no tiene el ensamblaje, devuelva null. Ese es el comportamiento por defecto.