Проблема компиляции файла ресурсов в библиотеку - PullRequest
2 голосов
/ 24 марта 2009

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

3 голосов
/ 25 марта 2009

Вы можете достичь того, что хотите, написав свой собственный построитель выражений вместо использования версии встроенных ресурсов и извлечения информации из базы данных или файлов XML. В основном вы пишете свой собственный класс, унаследованный от System.Web.Compilation.ExpressionBuilder, а затем регистрируете его в Web.config следующим образом:

<compilation>
  <expressionBuilders>
    <add expressionPrefix="CustomResources" type="CustomResourcesExpressionBuilder"/>
  </expressionBuilders>
</compilation>

и затем вы можете ссылаться на него как на обычные ресурсы:

<%$ CustomResources:Section, Key %>

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

...