首页 > 解决方案 > .net core load *.deps.json 在运行时加载正确版本的依赖程序集

问题描述

ASP.NETCore 3.0 应用程序中,我有一个 Main 项目试图在运行时加载插件程序集。主项目包含一些接口,但不包含实现。插件程序集确实引用了 Main 项目并包含 Main 项目中定义的接口的实现。编译后,一些插件包含一个.deps.json文件,根据某些参数(例如平台)指定其依赖项的正确位置(特别是,这是 的情况System.Data.SqlClient,具有以下依赖项:

runtimes/win-arm64/native/sni.dll
runtimes/win-x64/native/sni.dll
runtimes/win-x86/native/sni.dll
...

当然,这些插件依赖项并没有在 Main 项目的.deps.json. 我希望能够在运行时加载它们。

请注意,手动将插件.deps.json文件合并到 Main 项目的.deps.json文件中成功使项目运行(为了自动化合并过程,我编写了一个简单的控制台应用程序 [参见:https ://www.newtonsoft.com/json/help/html/MergeJson .htm ] 在构建后事件中启动,合并所有.deps.json文件;请注意,合并.deps.json文件可能会导致Selenium .NET core 2.2 发布的项目 exe 甚至在 Windows x64 上都无法运行等问题)。无论如何,这听起来不是一个好的解决方案。我宁愿扫描.deps.json与每个插件程序集关联的文件,并在运行时相应地执行依赖关系探测。

我搜索了其他线程和文章,例如.NET Core 中的程序集加载https://docs.microsoft.com/en-us/dotnet/core/tutorials/creating-app-with-plugin-support,但我没有成功。

如何执行这项工作?

标签: asp.net-core.net-core.net-assembly

解决方案



推荐阅读