Problemas para compilar el archivo de recursos a la biblioteca
-
21-08-2019 - |
Pregunta
Tengo una aplicación web integrado en asp.net, que utiliza archivos de recursos para soportar múltiples idiomas. El problema que tengo es que sólo puedo añadir un nuevo archivo de idioma en Visual Studio, y tengo que reconstruir toda la aplicación para tener un nuevo lenguaje incluido. Después de buscar en la red me he dado cuenta que la compilación de los archivos de recursos se puede hacer en el compilador .NET. He utilizado los siguientes comandos:
Resgen.exe / compilación langfile.en.resx
al.exe /out:en\App_GlobalResources.resources.dll / cultura: es / embedresource: langfile .en.resources
El archivo se copia en la carpeta del sitio web, pero no funciona. Es decir, cuando selecciono el nuevo idioma desde la página web, las cuerdas se cargan desde el archivo de recursos predeterminado. Si creo el archivo de recursos en VS, funciona bien. He comprobado el tamaño de las dos archivos dll, el generado por VS y el compilado por mí mismo, y tienen el mismo tamaño, pero el compilado no funciona. Sólo se me ocurre que tal vez tendría que utilizar algunos otros parámetros en los comandos anteriores, pero no se sabe muy bien.
Cualquier ayuda es muy apreciada.
Solución
Puede lograr lo que quiere escribiendo su propio generador de expresiones en lugar de utilizar la versión incorporada de recursos y tire de la información de una base de datos o XML. Básicamente a escribir su propia clase que hereda de System.Web.Compilation.ExpressionBuilder y luego registrarla en Web.config como esto:
<compilation>
<expressionBuilders>
<add expressionPrefix="CustomResources" type="CustomResourcesExpressionBuilder"/>
</expressionBuilders>
</compilation>
y luego se puede hacer referencia a ella como recursos normales:
<%$ CustomResources:Section, Key %>