我正在尝试将SQLite嵌入到我的可移植C# .NET 2.0应用程序中,而不是将DLL文件包含在分发文件夹中。但是,要嵌入SQLite,我无法使用PHXSoftware提供的混合模式库。相反,我使用的是他们的"仅托管"版本。
这在 32 位计算机上工作正常,但是当它在 64 位计算机上运行时,它会引发格式异常。正如我从这里发现的:http://sqlite.phxsoftware.com/forums/p/2564/9939.aspx 我需要先以所需的体系结构格式手动加载非托管 sqlite3.dll,然后再使用托管库。
这就是我的不足之处。我找不到 64 位版本的 SQLite 与 32 位版本一起包含。谁能帮忙?我敢说,有人有更好的主意吗?
我建议你自己构建源代码。这很简单。特别是考虑到 Sqlite 提供合并源。
以下是我用于 64 位发布版本的编译器预处理器定义:
- WIN64 NDEBUG
- _窗户
- _USRDLL
- NO_TCL
- _CRT_SECURE_NO_DEPRECATE
- 线程安全=1
- TEMP_STORE=1
- SQLITE_MAX_EXPR_DEPTH=0
以下是我用于 32 位发布版本的编译器预处理器定义:
- WIN32
- NDEBUG
- _窗户
- _USRDLL
- NO_TCL
- _CRT_SECURE_NO_DEPRECATE
- 线程安全=1
- TEMP_STORE=1
- SQLITE_MAX_EXPR_DEPTH=0
System.Data.SQLite 分支有 .Net 2、3.5 和 4 的 x86/x64 二进制文件。下载在这里。
更新:
另一种可能的解决方案是将应用程序定位为 x86 平台,并仅使用 x86 SQLite 库。如果应用程序不需要面向 x86 平台的 x64 功能,则会大大降低部署的复杂性。