Problema compilar arquivo de recurso para biblioteca
-
21-08-2019 - |
Pergunta
Tenho uma aplicação web construída em asp.net, que usa arquivos de recursos para suportar vários idiomas. O problema que tenho é que eu só pode adicionar um novo arquivo de idioma no Visual Studio, e eu tenho que reconstruir toda a aplicação para ter uma nova linguagem incluído. Depois de pesquisar na net eu descobri que a compilação dos arquivos de recursos pode ser feito no compilador .net. Eu usei os seguintes comandos:
resgen.exe / compilação langfile.en.resx
Al.exe /out:en\App_GlobalResources.resources.dll / cultura: en / embedresource: langfile .en.resources
O arquivo é copiado para a pasta do site, mas ele não funciona. Quero dizer, quando eu selecionar o novo idioma a partir da página web, as cordas são carregados do arquivo de recurso padrão. Se eu criar o arquivo de recurso no VS, ele funciona bem. Eu verifiquei os tamanhos dos dois arquivos DLL, o gerado pelo VS eo compilado por mim mesmo, e eles têm o mesmo tamanho, mas a um compilado não funciona. Só posso pensar que talvez eu teria que usar alguns outros parâmetros nos comandos acima, mas eu realmente não sei.
Qualquer ajuda é muito apreciada.
Solução
Você pode conseguir o que você quer escrever o seu próprio construtor de expressão em vez de usar a versão built-in recursos e puxar as informações do banco de dados ou arquivos XML. Basicamente você escrever sua própria classe herdando de System.Web.Compilation.ExpressionBuilder e registrá-lo no Web.config como esta:
<compilation>
<expressionBuilders>
<add expressionPrefix="CustomResources" type="CustomResourcesExpressionBuilder"/>
</expressionBuilders>
</compilation>
e, em seguida, você pode fazer referência a ela como recursos normais:
<%$ CustomResources:Section, Key %>