Я пытаюсь вызвать класс для запуска под отдельным AppDomain, но я получаю исключение из-за того, что я могу загрузить класс или одну из его зависимостей. Вот пример того, что я делаю.Как создать новый экземпляр класса под AppDomain
AppDomain ad = AppDomain.CreateDomain("New domain");
IIdentity identity = new GenericIdentity("NewUser");
IPrincipal principal = new GenericPrincipal(identity, null);
ad.SetThreadPrincipal(principal);
TestClass remoteWorker = (TestClass)ad.CreateInstanceAndUnwrap(
binFolder+"\\TestProject.dll",
"TestClass");
remoteWorker.Run(data1,data2);
В моем отдельном TestProject у меня есть один класс с именем TestClass:
public class TestClass : MarshalByRefObject
{
public void Run(string name, string path)
{
//Some stuff
}
}
Я проверил все пути, за все, и они являются правильными. Я получаю сообщение об ошибке:
Could not load file or assembly 'K:\\Installer\\Bin\\TestProject.dll'
or one of its dependencies. The given assembly name or codebase was invalid.
(Exception from HRESULT: 0x80131047)
Я попытался изменить пути, переместив их на выполняющуюся в данный момент сборку. Еще ничего. DLL находится в папке K: \ Installer \ Bin \ TestProject.dll. Я запускаю это под admin, поэтому у него есть разрешения для Dll.
Вы пытались поймать исключение 'ReflectionTypeLoadException'? Возможно, «TestProject.dll» имеет некоторые зависимости, которые среда выполнения не могла решить. – McGarnagle
Единственное, что входит в комплект, это системные DLL. Как бы они не решались? – busbina