Невозможно загрузить сборку в 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) не может найти сборки из подкаталога. Когда вы пытаетесь загрузить сборки в контексте загрузки, вы должны убедиться, что эти сборки расположены в одном из следующих мест:
- базовый каталог AppDomain
- подкаталог базового каталога, который указан в пути к приватным бинам AppDomain
- GAC
Для получения дополнительной информации вы можете проверить следующие статьи:
Как среда выполнения находит сборки
Лучшие практики для сборки Загрузка
Назад к основам: использование Fusion Log Viewer для отладки ошибок загрузчика Obscure