Я пытаюсь разработать архитектуру плагинов в .Net. Приложение будет приложением .Net. Там будут каталоги, которые содержат плагины. Каждый каталог будет представлять собой плагин. Каждый каталог плагинов также будет содержать все библиотеки зависимостей. Плагины должны храниться в отдельном домене приложений, так как плагины могут использовать одни и те же сборки, но разные версии.
Когда он выполняет цикл foreach в Init (), я получаю
System.IO.FileNotFoundException: Не удалось загрузить файл или сборку '[Имя сборки], Версия = 1.0.0.0, Культура = нейтральная, PublicKeyToken = null' или одна из ее зависимостей. Система не может найти указанный файл.
в _apDomain.Load () для сборок, которых нет в основном проекте.
Код:
readonly private AppDomain _appDomain;
internal ItemModuleAppDomain()
{
AppDomainSetup info = AppDomain.CurrentDomain.SetupInformation;
_appDomain = AppDomain.CreateDomain("ChildDomain");
}
public void Init(string dllDir)
{
string[] dlls = Directory.GetFiles(dllDir, "*.dll", SearchOption.TopDirectoryOnly);
foreach(string dll in dlls)
{
_appDomain.Load(AssemblyName.GetAssemblyName(dll));
}
Есть идеи, почему? Я попробовал несколько методов, таких как чтение сборки в виде массива байтов для загрузки.