Я пытаюсь добавить систему аддонов к моему приложению Windows.Net с помощью Reflection; но он терпит неудачу, когда есть аддон с зависимостью.
Класс Addon должен реализовать интерфейс "IAddon" и иметь пустой конструктор.
Основная программа загружает аддон с помощью Reflection:
Assembly assembly = Assembly.LoadFile(@"C:\Temp\TestAddon\Addon.dll");
Type t = assembly.GetType("Test.MyAddon");
ConstructorInfo ctor = t.GetConstructor(new Type[] { });
IAddon addon= (IAddon) ctor.Invoke(new object[] { });
addon.StartAddon();
Он отлично работает, когда аддон не использует dependencie.
Но если мой аддон ссылается и использует другую DLL (C:\Temp\TestAddon\MyTools.dll), которая сохраняется рядом с аддоном на диске, она не работает:
System.IO.FileNotFoundException: Не удалось загрузить файл или сборку "MyTools.dll" или одну из его зависимостей.
Я не хочу копировать DLL-аддоны рядом с моим исполняемым файлом, как я могу это сделать, чтобы сообщить .Net runtime для поиска в "C:\Temp\TestAddon \" для любой зависимости?
Обратите внимание, что добавление
Assembly assembly = Assembly.LoadFile(@"C:\Temp\TestAddon\MyTools.dll");
ничего не меняет.