2013-06-10 2 views
0

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

Вот мой код.

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

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

ответ

0

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

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

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

  1. база дир из AppDomain
  2. суб каталог базовой директории, что указывается в частных мусорных трактов AppDomain в
  3. ПКК

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

How the Runtime Locates Assemblies

Best Practices for Assembly Loading

Back to Basics: Using Fusion Log Viewer to Debug Obscure Loader Errors