我有一个 .NET 6.0 DLL,其中包含 SQL Server 数据库的 Entity Framework Core
DbContext
。
如果该程序集由 .NET 6.0 EXE 引用然后调用,则一切正常。
但是,如果我尝试在插件概念中使用它并通过反射加载 DLL,如下所示:
var assembly = Assembly.LoadFrom("Plugin.dll");
var pluginType = assembly.GetExportedTypes()
.Where(t => t.IsAssignableTo(typeof(IPlugin)))
.First();
var plugin = (IPlugin)Activator.CreateInstance(pluginType);
然后我明白了
此平台不支持 Microsoft.Data.SqlClient。
唯一的区别在于
PluginHost.deps.json
现在不知道 Microsoft.Data.SqlClient
在某个时刻可能会参与其中。
我想知道是否有一些热加载函数来教导 EXE DLL 的依赖关系。
整个测试工作可以在 GitHub
上找到我通过这篇博文以及其中提供的nuget找到了答案。