我创建了以下Github存储库来记录问题:https://github.com/red-swan/fake-sqlite-problem
我无法从依赖于Paket
的 F# FAKE
文件构建sqlite
数据库。将 nuget 包System.Data.SQLite
添加到paket.dependencies
意味着我可以open System.Data.SQLite
但是当尝试从build.fsx
文件构建数据库时,出现以下错误:
(Unable to load DLL 'SQLite.Interop.dll' or one of its dependencies: The specified module could not be found. (Exception from HRESULT: 0x8007007E))
SQLite.Interop.dll
是位于System.Data.SQLite
的依赖System.Data.SQLite.Core
的依赖runtimeswin-x64nativenetstandard2.0
。尝试直接引用它 #r
语句在build.fsx
中失败并显示错误:
Error opening binary file ... bad cli header, rva
我不确定应该如何解决所有问题,但是从实际fsproj
运行数据库创建工作得很好,所以我相信这与FAKE
或Paket
分辨率有关。
如果您熟悉FAKE
,这听起来合理吗?你知道怎么解决这个问题吗?
要重现错误,请执行以下操作: git clone https://github.com/red-swan/fake-sqlite-problem.git
TeaDrivenDev
的上述评论有解决方案。我把答案放在这里,这样我就可以结束这个问题了。
具体来说,我找到了本机 dll SQLite.Interop.dll
并将其放入 FAKE build.fsx
文件所在的根文件夹中。参考文献TeaDrivenDev
文章也有替代方法。