Как на самом деле заменить файл ресурсов (.resx) в работающем приложении для .Net DLL? - PullRequest
1 голос
/ 17 декабря 2009

Вот мой сценарий:

У меня есть DLL-библиотека .Net (3.5), на которую ссылается веб-приложение ASP.Net.

Один из классов в DLL имеет файл .resx, содержащий строку сообщения об ошибке, которая в конечном итоге отображается на вызывающей странице .aspx.

DLL использует несколько пространств имен, я установил для файла .resx то же пространство имен, что и для вызывающего его класса, а файл .resx имеет то же местоположение папки и имя файла, что и у используемого класса с постфиксом с «Ресурсами»: т.е.

Класс: ClassName.cs
.resx: ClassNameResources.resx

Считывает строку .resx (которая скомпилирована в DLL как встроенный ресурс) без проблем.

Проблема, с которой я сталкиваюсь, заключается в попытке заменить строку сообщения об ошибке в развернутом веб-приложении - как мне на самом деле это сделать?

Можете ли вы указать мне на руководство? - лучшее, что я нашел до сих пор, это этот , в котором говорится, что используются regen.exe и al.exe, но полученный файл .resources не используется, поскольку сообщение об ошибке не меняется , На данном этапе я не пытаюсь локализовать для какой-либо культуры, я пытаюсь изменить строки, возвращаемые для культуры по умолчанию.

Спасибо за любые предложения, которые вы можете сделать: o)

1 Ответ

3 голосов
/ 17 декабря 2009

Как сказал выше Лассе В. Карлсен, файлы ресурсов - это не то, что нужно для того, что вы хотите. По сути, байт-код для класса и ресурсов скомпилирован в сборку, которая в итоге представляет собой единое целое.

C # позволяет вам легко использовать ресурсы, содержащиеся в файле ресурсов, через Properties.Resources .... Пока все хорошо.

Если вы локализуете свое приложение, вы получите другую сборку (DLL), которая содержит локализованные ресурсы. Внутренние механизмы используют эту DLL для получения данных ресурса вместо стандартной сборки.

Тот факт, что ресурсы фактически хранятся в сборке (используйте Reflector, чтобы понять, что я имею в виду), делает невозможным просто поместить другой файл ресурсов в ту же папку для новых ресурсов, которые будут использоваться.

Файлы ресурсов не похожи на файлы конфигурации, которые копируются в папку развертывания (или в другое место) и затем загружаются как внешние файлы.

Если вы хотите заменить ресурсы на лету, как вы описали, вам придется использовать собственный механизм загрузки ресурсов. Я почти уверен, что вы не можете использовать встроенные механизмы ресурсов для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...