1

System.Data.SQLite (SDS) 显然是在 .Net 应用程序中使用 SQLite 的最流行方式。

我想知道如果

  • SDS 需要另外提供 SQLite DLL,或者如果 SDS 包含 SQLite 源代码,并且
  • SDS可以静态编译成VB.Net应用程序吗?它只能作为DLL发布吗?

谢谢你。

4

2 回答 2

0

实际上,将 System.Data.SQLite.dll 编译为不需要 C++ 运行时非常容易。例如,如果您下载源代码并遵循构建过程,您将在以下路径中找到 System.Data.SQLite.dll 的静态链接(无需 C/C++ 运行时)副本:

<your-src-root>\bin\<2008 or 2010>\<Win32 or x64>\ReleaseStatic

例如,如果您的源代码位于其中,C:\Work\sqlite-netFx-source-1.0.80.0则 Win32 和 .NET 3.5 (VS 2008) 的静态链接二进制文件将位于:

C:\Work\sqlite-netFx-source-1.0.80.0\bin\2008\Win32\ReleaseStatic

此外,由于 System.Data.SQLite.dll 是一个混合模式程序集,由使用link.exe链接在一起的托管 .netmodule 和本机 .obj 文件组成,因此也可以将您的应用程序构建为 .netmodule 并将其链接在一起与 SQLite 成一个单一的混合模式程序集。

生成的程序集仍然是 Win32 或 x64,但是由于几乎所有 x64 机器在运行 Win32 代码时都没有问题,您可以只选择 Win32,只要:

  • 您的应用程序是 .exe 或 .dll 始终加载到 Win32 进程中,并且
  • 您不使用任何 x64 特定优势,例如更大的地址空间或使用仅在 x64 中可用的非托管代码
于 2012-12-10T17:14:55.840 回答
0

为了扩展我的评论,SDS 是非托管代码的 .net 包装器,因此您需要将发布代码与 DLL 副本一起发布。

正如史蒂夫所提到的,DLL 有 32 位和 64 位版本,而且我在挫折之后发现,你必须在目标机器上安装相应的 Visual c++ 运行时,所以如果你将 32 位版本部署到 64 位机器上,它将需要安装 32 位 c++ 运行环境。

我目前正在研究但没有时间测试的另一种方法是 csharpe-sqlite,一个纯 .net 实现:

http://code.google.com/p/csharp-sqlite/

顾名思义,用 c# 编码,但当然可以在任何 .net 语言中使用,包括 vb.net

于 2012-12-10T12:15:15.363 回答