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

StackOverflow https://stackoverflow.com/questions/676552

Вопрос

У меня есть веб-приложение, встроенное в asp.net, которое использует файлы ресурсов для поддержки нескольких языков.Проблема в том, что я могу добавить новый языковой файл только в Visual Studio, и мне приходится пересобирать все приложение, чтобы включить новый язык.После поиска в сети я обнаружил, что компиляцию файлов ресурсов можно выполнить в компиляторе .net.Я использовал следующие команды:

resgen.exe /компилировать langfile.en.resx

al.exe /out:en app_globalresources.resources.dll /culture: en /embedresource: langfile .en.resources

Файл копируется в папку сайта, но не работает.Я имею в виду, что когда я выбираю новый язык на веб-странице, строки загружаются из файла ресурсов по умолчанию.Если я создаю файл ресурсов в VS, все работает нормально.Я проверил размеры двух файлов dll: сгенерированного VS и скомпилированного мной, и они имеют одинаковый размер, но скомпилированный не работает.Я могу только думать, что, возможно, мне придется использовать какие-то другие параметры в приведенных выше командах, но я действительно не знаю.

Любая помощь действительно ценится.

Это было полезно?

Решение

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

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

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

<%$ CustomResources:Section, Key %>

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top