sqlite - 使用 sqlite 创建 .Net Core 全局工具无法加载 SQLite.Interop
问题描述
我正在编写一个访问 SQLite 数据库的 .Net Core 全局工具。我正在使用SQLProvider来满足我的 ORM 需求System.Data.SQLite.Core
。在 SQLProvider 文档中,它说明了必须将 SQLite.Interop.dll 复制到输出路径的一些内容,我相信我已经正确地做到了这一点,因为程序按照它应该从 Visual Studio 执行,以及使用 Fake 构建项目处于发布模式并直接使用 dotnet 运行生成的 .dll。
但是,当我尝试将其打包为 NuGet 文件时,当我尝试运行该程序时它会失败,System.Reflection.TargetInvocationException: Unable to load DLL 'SQLite.Interop.dll' or one of its dependencies
并且我无法确定 SQLite.Interop.dll 的复制是否正确,或者还有其他一些问题。仅当我尝试运行已安装的全局工具时才会出现此错误,如果我通过 dotnet 运行发布模式二进制文件则不会出现此错误
从评论编辑:
SQLite.Interop.dll 不包含在 NuGet 包中。我正在通过调用DotNet.pack
. 我将如何告诉该步骤包含 dll?
打包步骤目前看起来像这样
Target.create "Pack" (fun _ ->
DotNet.pack (fun packOptions ->
{ packOptions with
Configuration = DotNet.BuildConfiguration.Release
NoBuild = true
VersionSuffix = Some "1.0.1-preview8"
OutputPath = Some outputDirectory }
) "./src/WhereInTheWorld/WhereInTheWorld.fsproj"
任何帮助,将不胜感激。
解决方案
我在评论我的 rmunn 后想通了。它与将互操作 dll 放入最终的 nuget 文件有关。我将此添加到我的 .fsproj 文件中
<Content Include="../../packages/System.Data.SQLite.Core/build/net46/**/*">
<Pack>true</Pack>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
推荐阅读
- maven - 使用 maven 构建后 Jar 文件不在目标文件夹中 - KOTLIN
- java - 两个线程可以访问同一个类的两个不同的静态方法吗
- javafx - 如何设置滑块更改侦听器仅在 JavaFX 中释放鼠标拖动时触发?
- html - "font-style: italic" 使文本从容器中突出,切断文本
- sql - 使用 json_extract 在 JSON 数组中的所有对象中查找
- asp.net-mvc - Include/Where VS Where/Include EF MVC 性能
- algorithm - Fenwick Trees 中的更新步骤
- java - android.view.ContextThemeWrapper 无法转换为 android.app.Activity
- css - 词缀打破了引导程序的嵌套网格
- android - 如何使用 Kotlin 将我计算机中托管的 MySQL 连接到 Android 应用程序