我在 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 时应该加载所有依赖项还是一个错误?