Мой сценарий заключается в том, что у меня есть приложение .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 показывает, что каталоги, в которых он искал, были каталогами консольных приложений. В него не вошли папки поиска, которые были заданы из AppDomain — в переменной «baseDirecory».
Что я делаю неправильно? Есть ли другой способ выполнить код, который находится в другом AppDomain?
Спасибо...