Мой сценарий заключается в том, что у меня есть приложение .net (скажем, консольное приложение), которое создает домены приложений. Затем необходимо создать экземпляры и вызвать методы для типов, которые находятся в этом AppDomain. У каждого домена приложений есть определенный каталог, в котором должны находиться его зависимости, который не находится (или даже не близок) к каталогу консольных приложений. Вот мой простой код:
string baseDirectory = "c:\foo"; // <- where AppDomain's dependecies
// set up the app domain
AppDomainSetup setup = new AppDomainSetup();
setup.ApplicationName = DateTime.Now.ToString("hh:MM:ss:ffff");
setup.ApplicationBase = baseDirectory;
setup.PrivateBinPath = baseDirectory;
// create app domain
AppDomain domain = AppDomain.CreateDomain(
name,
AppDomain.CurrentDomain.Evidence,
setup );
// instantiate Type from an assembly in that AppDomain
ObjectHandle handle = domain.CreateInstanceFrom(
"SampleClassLibrary.dll", // <- exists in "c:\foo"
"SomeClassInTheDll" );
Вызов CreateInstanceFrom приводит к FileNotFoundExcepotion. FusionLog показывает, что каталоги, которые он искал, были каталогами консольных приложений. Он не включал папки поиска, которые были установлены из домена приложения - в переменной «baseDirecory».
Что я делаю не так? Есть ли другой способ выполнить код, который живет в другом домене приложений?
Спасибо ...