Проблема с компиляцией файла ресурса в библиотеку

У меня есть веб-приложение, встроенное в 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 %>

Вы можете найти некоторые статьи по этому вопросу здесь и здесь.

Другие вопросы по тегам