2012-12-10 45 views
1

System.Data.SQLite(SDS)显然是从.Net应用程序使用SQLite最流行的方式。静态编译SQLite到VB.Net应用程序?

我想知道如果

  • SDS需要除了出货SQLite的DLL,或者如果SDS包括 SQLite的源代码,和
  • SDS可以静态编译成的 VB.Net应用它只能作为DLL发货?

谢谢。

+0

其净包装器非托管代码。你需要运送dll,并确保在目标机器上安装了visual C++运行库 – Steve

+0

并且不要忘记64/32位检查。 (不同的DLL版本) – Steve

回答

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

+0

非常感谢有关匹配DLL + C++运行时的信息。 C#SQLite似乎是无用的,因为它的最新更新是在2011年8月。 – Gulbahar

0

实际上很容易编译System.Data.SQLite.dll到不需要C++运行时。例如,如果你download的源代码,并按照build procedures你会发现静态链接(没有C/C++运行时所需)在以下路径System.Data.SQLite.dll的副本:

<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由管理.netmodule和本机的使用link.exe链接在一起的.obj文件,有可能b将您的应用作为.net模块来使用,并将它与SQLite链接到一个混合模式程序集中。

所得到的组件将仍然是要么的Win32或x64,但是因为几乎所有的x64机器不会有任何问题的Win32运行的代码,你可以在Win32只是解决,只要:

  • 您的应用程序是一个.exe或者.dll中始终加载到一个Win32进程,并
  • 你不使用任何的具体x64的优势,如更大的地址空间或仅在64位利用现有非托管代码
相关问题