Невозможно загрузить сборку в appDomain

До недавнего времени я загружал свою сборку, вызывая Assembly.LoadFrom, и все было в порядке. Но теперь мне нужно загрузить его во временный домен приложения, но у меня сохраняется исключение FileLoadException при попытке загрузить сборку во временном домене. Я попытался передать параметры appDomainSetup в метод CreateDomain, но безуспешно.

Вот мой код

var tempDomain = AppDomain.CreateDomain("TempDomain");
Assembly sampleAssembly = tempDomain.Load(pathToDll);

Моя сборка находится в подкаталоге моего базового каталога приложения

1 ответ

AppDomain.Load загружает сборку в текущий исполняемый AppDomain, а не в "TempDomain". Как отмечено в документе MSDN:

Этот метод следует использовать только для загрузки сборки в текущий домен приложения. Этот метод предоставляется для удобства тех, кто может взаимодействовать, которые не могут вызвать статический метод Assembly.Load. Чтобы загрузить сборки в другие домены приложений, используйте метод, например CreateInstanceAndUnwrap.

Теперь в вашем случае вызов не удался, потому что исполняемый в данный момент AppDomain (скорее всего, ваш главный AppDomain) не может найти сборки из подкаталога. Когда вы пытаетесь загрузить сборки в контексте загрузки, вы должны убедиться, что эти сборки расположены в одном из следующих мест:

  1. базовый каталог AppDomain
  2. подкаталог базового каталога, который указан в пути к приватным бинам AppDomain
  3. GAC

Для получения дополнительной информации вы можете проверить следующие статьи:

Как среда выполнения находит сборки

Лучшие практики для сборки Загрузка

Назад к основам: использование Fusion Log Viewer для отладки ошибок загрузчика Obscure

Другие вопросы по тегам