У меня следующая ситуация.Существует n папок, каждая из которых содержит две сборки:
Assembly1.dll и Assembly2.dll
Вся сборка1.DLL точно такие же
Все файлы Assembly2.dll немного отличаются друг от друга, но имеют одинаковые классы / методы.
ВсеСсылка Assembly1.dll на Assembly2.dll
В моей программе я хотел бы создать экземпляр некоторого класса внутри Assembly1 и вызвать метод для этого класса:
for(int i = 0; i < 100; i++)
{
Assembly myAssembly1 = Assembly.LoadFrom("Directory"+ i + "\\Assembly1.dll");
Type myType = myAssembly1.GetType("MyClass");
object myObject = Activator.CreateInstance(myType);
myType.Invoke(myMethodName, BindingFlags.InvokeMethod, null, myObject, null);
}
Этот фрагмент кода выполняется для каждой папки, содержащей файл Assembly1.dll. Проблема в том, что первый файл работает нормально, но после этого файл Assembly2.dll уже был загружен и не будет перезагружен.Однако его необходимо заменить на тот, который находится внутри текущей папки (номер i).Это потому, что это немного отличается.
В данный момент каждый раз, когда я вызываю вышеуказанный фрагмент кода, будет выполняться одна и та же сборка2.
Я уже искал похожие вопросы и нашел несколько советов по использованию пользовательских доменов приложений .Я попробовал это, но я не смог заставить его работать должным образом.
Может ли кто-нибудь привести пример кода, как инициализировать новый AppDomain и выполнить вышеупомянутый код в этом новом домене (так чтобы ссылалась Assembly2.DLL будет загружен и выгружен правильно)?
Или у кого-то есть иное представление о том, как решить эту проблему?
С наилучшими пожеланиями, Кристиан