日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

让使用SQLite的.NET应用自适应32位/64位系统

發布時間:2023/12/18 windows 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 让使用SQLite的.NET应用自适应32位/64位系统 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Windows 7 64 bit(剛擴到4G內存,果斷換64位的,那速度杠杠的) Microsoft?Visual Studio 2010 Ultimate 32bit(在64位系統里運行正常) sqlite-netFx40-setup-bundle-x64-2010-1.0.90.0 首先要先下載SQLite的開發環境安裝包(我是這么理解的,貌似只搞到System.Data.SQLite.dll這個文件引用過去都行),下載頁面:http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki 根據自己的VS版本,我下載的是
?
Setups for 64-bit Windows (.NET Framework 4.0)
?sqlite-netFx40-setup-bundle-x64-2010-1.0.90.0.exe?
(12.00 MiB)
?This setup package features the mixed-mode assembly and will install all the necessary runtime components and dependencies for the x64 version of the System.Data.SQLite 1.0.90.0 (3.8.2) package. The Visual C++ 2010 SP1 runtime for x64 is included. The .NET Framework 4.0 is required.?
(sha1: 518be2c4029f7602dd01b6bb24939a5da861e2aa)
下載這個安裝文件的時候有個小插曲,就是直接在搜狗瀏覽器中點這個鏈接的時候調用迅雷下下來的是一個html文件,顯然有問題,后來用IE訪問,在新標簽頁中打開才出來真實的下載地址 搞下來這個文件后運行安裝,一路下一步就行了,默認安裝到了C:Program FilesSystem.Data.SQLite,打開這個路徑可以看到下面的2010bin文件夾下還有個演示用的程序test.exe,運行一下可以看到效果,這里還有最核心的System.Data.SQLite.dll文件,這個文件就是SQLite數據庫的引擎了,其實后面訪問數據庫的時候也就用這一個文件,很方便嵌入的.

 

?

?

如果一個.NET應用要自適應32位/64位系統,只需要在項目的“目標平臺”設置為“Any CPU”。但是如果應用中使用了SQLite,情況就不同了。

?

  SQLite的.NET開發包來自是System.Data.SQLite,完成兼容ADO.NET接口,也提供了Linq和Entity Framework 6實現。但這不重要,重要的是System.Data.SQLite是由兩部分代碼組成的,一部分是非托管的C++代碼實現,一部分是托管代碼與.NET框架接口。由于非托管代碼不能構建成“Any CPU”的,所以System.Data.SQLite的下載頁面的每個包都是按32位或64位系統進行了區分的。

?

  說到這里,順便說一下,看著System.Data.SQLite的下載頁面就頭暈。雖然在下載頁面一開始就花了大量的篇幅來說明如何選擇下載,但是估計沒幾個人會把它看完,所以這里還是簡單介紹一下。

?


  1) 首先是按類型分為安裝包、非靜態連接的二進制包和靜態連接的二進制包。安裝包會安裝相關的動態庫到系統內,并注冊到GAC(Global Assembly Cache);兩種二進制包的區別在于非托管部分的連接方式不同,非靜態連接的二進制包在使用時需要VC運行時庫的支持。需要注意的是:如果需要在Visual Studio中連接SQLite數據庫,就必須選擇合適的安裝包進行安裝。

?

  比如,要在Visual Studio 2010中連接SQLite,應該下載“sqlite-netFx40-setup-bundle-x86-2010-1.0.90.0.exe”,這在下載包的說明中有明確黑體字說明。


[下載包的說明中有明確的黑體字說明]

?

  安裝之后就可以在Visual Studio 2010中連接SQLite了:


[在Visual Studio中連接SQLite]

?

  2) 每個類型都按.NET版本分成了若干小組,目前從.NET 2.0 SP2到.NET 4.5.1,一共支持5個版本的.NET Framework。每個.NET版本又分為32位和64位兩組。選用32位還是64位是根據使用系統來決定的。比如開發的時候是64位系統而發布后運行在32位系統上,就需要在開發時使用64位System.Data.SQLite.dll,而在發布時用32位的System.Data.SQLite.dll替換(看起來很麻煩的樣子~~請看后面的解決辦法~~)。

?

  3) 在每個.NET版本分組中都有2個文件包,一個帶有“bundle”字樣,另一個沒有。其中帶有“bundle”字樣的表示動態庫是按混合模式編譯的,在使用的時候只需要System.Data.SQLite.dll就可以了,而不帶“bundle”的則是將非托管部分和托管部分分別編譯,System.Data.SQLite.dll不能獨立使用,還需要有SQLite.Interop.dll才能使用。


?

  言歸正傳,如果要使用“Any CPU”的System.Data.SQLite.dll,就必須使用不帶“bundle”字樣,即非混合編譯的二進制包。

?

  非混合編譯的二進制包有System.Data.SQLite.dll和SQLite.Interop.dll兩個動態庫。按官方說明,SQLite.Interop.dll是可以放與System.Data.SQLite.dll相同的目錄下,也可以放在x86或x64子目錄下,由System.Data.SQLite.dll根據系統類型調用。為了確認,下載如下兩個包來進行比較:

sqlite-netFx40-binary-Win32-2010-1.0.90.0.zip

sqlite-netFx40-binary-x64-2010-1.0.90.0.zip

  結果發現只有SQLite.Interop.*不同,其它文件都完全相同


[比較結果:只有SQLite.Interop.*不同]

?

  然后將兩個包的SQLite.Interop.*分別放在x86和x64子目錄下,合并成一個包。再在不同類型的系統下運行test.exe,結果都是完全通過

?

  最后需要做的就是在Visual Studio項目中引用System.Data.SQLite.dll,再將x86\SQLite.Interop.dll和x64\SQLite.Interop.dll拷貝到項目根目錄,包含在項目中,在屬性中設置“如果較新則復制”或“始終復制”。生成結果就像這樣:

TestSQLite\bin\Debug

│ ?System.Data.SQLite.dll

│ ?TestSQLite.exe

├─x64

│ ? ? ?SQLite.Interop.dll

└─x86

? ? ? ?SQLite.Interop.dll

  組合后的包命名為“sqlite-netFx40-static-binary-x86-x64-2010-1.0.90.0.zip”,共享給大家,歡迎下載使用。

總結

以上是生活随笔為你收集整理的让使用SQLite的.NET应用自适应32位/64位系统的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。