asp.net-core - .net core load *.deps.json 在运行时加载正确版本的依赖程序集
问题描述
在ASP.NET
Core 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,但我没有成功。
如何执行这项工作?
解决方案
Nate McMaster ( https://disqus.com/by/natemcmaster/ )正是为此目的制作了一个项目 ( DotNetCorePlugins ):
https://www.nuget.org/packages/McMaster.NETCore.Plugins
https://github.com/natemcmaster/DotNetCorePlugins
具体见:https ://natemcmaster.com/blog/2018/07/25/netcore-plugins/#comment-4690476307
推荐阅读
- c# - Azure 服务总线侦听器打开太多 TCP 连接(耗尽)
- php - 在 xampp 上安装 magento 时
- django - Django Rest Framework 使用嵌套序列化器发布数据两个模型
- ros - ros-sharp 服务调用示例
- python - 如何将用户输入转换为独立的虚拟变量
- javascript - 无法使用在 Angular 7 中创建的自定义管道进行搜索
- javascript - 如何制作一个用于级联多个问题和答案的框
- .net - 有没有办法在 Kusto Data .Net 库中传输结果?
- android - 如何使用 ExoPlayer 以全屏模式显示视频?
- javascript - 如何在检查来自 php 脚本和单选按钮的响应代码时结合每个元素 javascript