2012-12-10 58 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位利用現有非託管代碼
相關問題