Я пытаюсь добавить систему дополнений в свое приложение Windows.Net, используя Reflection; но он не работает, когда есть дополнение с зависимостью.
Класс аддона должен реализовывать интерфейс «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();
Отлично работает, когда в аддоне не используются зависимости.
Но если моя ссылка на надстройку и используется другая DLL (C: \ Temp \ TestAddon \ MyTools.dll), которая сохранена рядом с надстройкой на диске, произойдет сбой:
System.IO.FileNotFoundException: Не удалось загрузить файл или сборку «MyTools.dll» или одну из ее зависимостей.
Я не хочу копировать аддон-библиотеку рядом с моим исполняемым файлом, как я могу сказать .Net runtime искать в "C: \ Temp \ TestAddon \" какую-либо зависимость?
Обратите внимание, что добавление
Assembly assembly = Assembly.LoadFile(@"C:\Temp\TestAddon\MyTools.dll");
ничего не меняйте.