【发布时间】:2020-11-19 03:48:48
【问题描述】:
我有一个加载插件的 .Net Core 3.1 控制台应用程序。我的一个插件连接到 Sqlite,因此它对 Microsoft.Data.Sqlite 有 Nuget 依赖。但是,在加载/运行插件时,我从控制台应用程序中收到了缺少的 DLL 异常,因为以下路径不存在:
MyConsoleApp\bin\x86\Debug\netcoreapp3.1\runtimes\win-x86\native\e_sqlite3.dll
我还有一个测试这个 Sqlite 插件项目的 MsTest 项目。它没有同样的问题。显然,如果 Visual Studio 项目 (1) 是某种可执行文件并且 (2) 具有相关的 Nuget 或项目引用,则 runtimes 文件夹和内容将自动存在。
按照这些规则,我的三个 Visual Studio 项目中有两个没有运行时文件夹:
- 插件对 Microsoft.Data.Sqlite 有 Nuget 依赖,但没有
runtimes文件夹,因为插件项目是 DLL...不是可执行文件。 - 测试 Sqlite 插件的 MsTest 项目 确实 具有
runtimes文件夹和内容,因为 (1) 它是一种可执行文件,并且 (2) 它具有对插件的项目引用项目(它又引用 Nuget 包)。 - 主控制台应用程序是可执行文件,但(故意)没有对插件的项目引用。因此它没有
runtimes文件夹。
我该如何解决这个问题?作为 hack,我只是将丢失的 DLL 复制到控制台应用程序的输出目标目录中。
另外,如果我将控制台应用程序中的项目引用添加到插件中,这个问题就解决了。但是,如前所述,我不希望控制台应用程序具有对任何插件的项目引用。插件应该是动态发现的。我认为解决此问题可能与创建 nuspec 文件有关。但是,the documentation for nuspec files 没有关于解决此问题的评论。
【问题讨论】:
-
您的插件项目类型是什么?您的控制台应用程序如何使用插件?
-
嗨,关于这个问题的任何更新?
标签: c# visual-studio .net-core plugins nuget