不同的 Core 或 nuget 包 DLL 不一致地发布或未发布

问题描述

我正在开发的软件使用在运行时发现并通过反射加载的可加载插件系统。每个插件都有自己的一组 DLL,这些 DLL 主要来自各种 Nuget 包。当我为特定平台发布独立部署时,一些插件加载成功,但其他插件抛出类似于以下的异常:

无法加载文件或程序集“System.Data.sqlClient,版本=4.6.1.2,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”。系统找不到指定的文件

无法加载文件或程序集“MailKit,版本=2.10.0.0,Culture=neutral,PublicKeyToken=4e064fe7c44a8f1b”。系统找不到指定的文件

等等。具有上述名称的 DLL(例如:System.Data.sqlClient.dll、MailKit.dll)确实存在于解决方案的 publish文件夹中,但 Activator.CreateInstance() 仍然报告它们丢失调用,而其余的几十个 DLL 加载良好。只要我不发布,项目就可以正常运行,并且单元测试能够通过使用这些 DLL 的代码。当我检查故障包的属性时,它们似乎与上面报告的版本不同。例如,对于 Nuget 包 System.Data.sqlClient 4.8.2,我看到:

enter image description here

这与异常报告的 4.6.1.2 不匹配。

造成这种混乱的原因是什么?必须在 VS、.csproj 或 dotnet publish 命令中做什么才能使 ALL DLL 一致且正确地发布?

任何提及不同版本的 Visual Studio 或 .NET Core 都是无关紧要的。我被困在这些问题中,必须按照我被告知的去做。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)