将SQLite静态编译为VB.Net应用程序?

时间:2012-12-10 11:33:06

标签: vb.net sqlite system.data.sqlite

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

我想知道是否

  • SDS要求另外发送SQLite DLL,或者如果SDS包含 SQLite源代码和
  • SDS可以静态编译成一个 它的VB.Net应用程序只能作为DLL提供?

谢谢。

2 个答案:

答案 0 :(得分:0)

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

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

我目前正在研究但没有时间进行测试的替代方案是csharpe-sqlite,一个纯粹的.net实现:

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

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

答案 1 :(得分:0)

实际上,将System.Data.SQLite.dll编译为不需要C ++运行时非常容易。例如,如果您download使用源代码并遵循build procedures,您将在以下路径中找到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是一个mixed-mode assembly,由使用link.exe链接在一起的托管.netmodule和本机.obj文件组成,因此可以将您的应用程序构建为.netmodule同时将它与SQLite一起链接到一个混合模式程序集中。

生成的程序集仍然是Win32或x64,但是由于几乎所有的x64机器都没有运行Win32代码的问题,所以只要符合以下条件就可以解决Win32:

  • 您的应用是.exe或.dll,它始终加载到Win32进程中,并且
  • 您不使用任何x64特定优势,例如更大的地址空间或仅使用x64中提供的非托管代码