Ошибка от GetS satelliteAssembly, вызванной на сборке, которая живет вне путей AppDomain - PullRequest
1 голос
/ 31 марта 2010

Цель моего приложения - выбрать несколько локализованных строк из сборки. Часть спецификации:

  • Сборка должна быть выбрана пользователем во время выполнения
  • Сборка является частной, то есть не зарегистрированной в GAC

Код, который я придумал:

Assembly resAssembly = Assembly.LoadFile(@"X:\PathToApp\Assembly.Name.dll");
CultureInfo ci = new CultureInfo("es-MX");
Assembly satAssembly = resAssembly.GetSatelliteAssembly(ci);

Последняя строка вызвала исключение:
Не удалось загрузить файл или сборку «Assembly.Name.resources» или одну из ее зависимостей. Система не может найти указанный файл.

Я преодолел исключение, скопировав папки, содержащие сателлитные сборки, в корень приложения.

Мне не нравится этот подход. Есть альтернативные идеи?

Большое спасибо заранее

1 Ответ

0 голосов
/ 01 апреля 2010

Метод Assembly.LoadFile не использует контекст привязки, поэтому его зависимости не обнаруживаются автоматически в его каталоге.

Вместо этого вы можете использовать Assembly.LoadFrom.

Вы можете прочитать пост Сюзанны Кук о различиях между этими двумя методами, чтобы получить дополнительную информацию ( LoadFile против LoadFrom ).

...