У меня есть консольное приложение в netcoreapp3.1, которое использует плагин netstandard2.0. Плагин ссылается на библиотеку классов и реализует интерфейс. Все зависимости dll находятся в папке плагина и plugin.dep. json включают в себя все библиотеки, на которые есть ссылки.
Когда я запускаю:
AssemblyLoadContext.Default.LoadFromAssemblyPath("path/to/main_myplugin.dll");//load plugin
он разрешает тип интерфейса
Когда я пытаюсь запустить экземпляр, как указано ниже, происходит сбой:
if (type != null) //type is resolved and not null
{
var instance = (IContract)Activator.CreateInstance(type); //instance is created
Console.WriteLine($"Create instance : {instance.GetType()}"); // ok instance is created
var ret = instance.Execute(); //!!!fire exception here
Console.WriteLine(ret);
}
и сообщение об ошибке:
System.IO.FileNotFoundException: «Не удалось загрузить файл или сборку» MyLibObjectsLib, версия = 1.0.0.0, культура = нейтральная, PublicKeyToken = null '. Система не может найти указанный файл. '
Если я загрузил все зависимости, все работает нормально.
Должен ли я загружать все зависимости при использовании AssemblyLoadContext.Default или это ошибка?