Проблема с компиляцией файла ресурса в библиотеку
У меня есть веб-приложение, встроенное в asp.net, которое использует файлы ресурсов для поддержки нескольких языков. У меня проблема в том, что я могу добавить только новый языковой файл в Visual Studio, и мне нужно пересобрать все приложение, чтобы включить новый язык. После поиска в сети я обнаружил, что компиляция файлов ресурсов может быть выполнена в компиляторе.net. Я использовал следующие команды:
resgen.exe / compile langfile.en.resx
al.exe /out:en\App_GlobalResources.resources.dll / culture: en / embedresource: langfile.en.resources
Файл копируется в папку на сайте, но он не работает. Я имею в виду, когда я выбираю новый язык на веб-странице, строки загружаются из файла ресурсов по умолчанию. Если я создаю файл ресурсов в VS, он работает нормально. Я проверил размеры двух dll-файлов, одного сгенерированного VS и скомпилированного мной, и они имеют одинаковый размер, но скомпилированный не работает. Я могу только думать, что, возможно, мне придется использовать некоторые другие параметры в командах выше, но я действительно не знаю.
Любая помощь очень ценится.
1 ответ
Вы можете достичь того, чего хотите, написав свой собственный конструктор выражений вместо использования версии встроенных ресурсов и получения информации из базы данных или файлов XML. По сути, вы пишете свой собственный класс, унаследованный от System.Web.Compilation.ExpressionBuilder, а затем регистрируете его в Web.config следующим образом:
<compilation>
<expressionBuilders>
<add expressionPrefix="CustomResources" type="CustomResourcesExpressionBuilder"/>
</expressionBuilders>
</compilation>
и тогда вы можете ссылаться на него как обычные ресурсы:
<%$ CustomResources:Section, Key %>
Вы можете найти некоторые статьи по этому вопросу здесь и здесь.