Я могу объединить локальные ресурсы в сборках-сателлитах?

У меня есть много локальных файлов ресурса

  • /Controls/App_LocalResources/SomeControl.ascx.resx,
  • /Pages/App_LocalResources/SomePage.aspx.resx, и т.д.

Я хочу добавить другой язык, и я не хочу проходить все папки и добавлять, что файлы SomeControl.ascx.de.resx, например, и затем иметь для перекомпиляции целого думают.

Я хотел бы использовать сборки-сателлиты и встроить все файлы во что-то как MyWebPage.de.dll

Это было возможно в версии VS2003 для глобальных ресурсов, но я не уверен, что могу сделать это в версии VS2008 для локальных ресурсов?

Я получаю доступ к ресурсу с синтаксисом:

<asp:label id="lblSomething" runat="server" meta:resourcekey="labelFirstName"/>
6
задан ron 29 October 2009 в 14:28
поделиться

1 ответ

Ваш вопрос на самом деле не слишком ясен, ищете ли вы функцию VS2008 или функцию фреймворка ASP.NET. Поэтому я остановлюсь на кодовом решении.

Используемый вами синтаксис неявной привязки использует LocalResourceProvider ASP.NET по умолчанию, который принимает путь страницы, под которой живут ресурсы, чтобы выяснить, какие ресурсы загрузить. Если ваши ресурсы хранятся в другом месте и вы все еще хотите использовать неявно связывающий синтаксис в вашем коде перед вами, то вам потребуется использовать свой собственный провайдер. Звучит сложно, но это довольно просто.

Для этого вам нужно сначала выделить подкласс ResourceProviderFactory

и переопределить оба класса

IResourceProvider CreateGlobalResourceProvider(string classKey)
IResourceProvider CreateLocalResourceProvider(string virtualPath)

...затем реализовать свой собственный IResourceProvider, который получает ваши ресурсы из ваших спутниковых сборок с помощью ResourceManager

public interface IResourceProvider
{
     object GetObject(string resourceKey, CultureInfo culture);
     IResourceReader ResourceReader { get; }
}

Затем вам нужно добавить конфигурацию в вашу сеть. файл конфигурации, чтобы сообщить ASP.NET об использовании вашей SatelliteResourceProviderFactory и переместить ваши ресурсы на вашу внешнюю сборку, но это должно быть хорошо для вас.

Много документации можно найти здесь... в разделе "Построение поставщика ресурсов базы данных"...

http://msdn. microsoft.com/en-us/library/aa905797.aspx#exaspnet20rpm_topic4

5
ответ дан 17 December 2019 в 04:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: