真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

讓使用了SQLite的.NET應用自適應32位/64位系統(tǒng)

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

成都創(chuàng)新互聯(lián)專注于句容網(wǎng)站建設服務及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供句容營銷型網(wǎng)站建設,句容網(wǎng)站制作、句容網(wǎng)頁設計、句容網(wǎng)站官網(wǎng)定制、小程序設計服務,打造句容網(wǎng)絡公司原創(chuàng)品牌,更為您提供句容網(wǎng)站排名全網(wǎng)營銷落地服務。

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

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


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

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

讓使用了SQLite的.NET應用自適應32位/64位系統(tǒng)
[下載包的說明中有明確的黑體字說明]

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

讓使用了SQLite的.NET應用自適應32位/64位系統(tǒng)
[在Visual Studio中連接SQLite]

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

 3) 在每個.NET版本分組中都有2個文件包,一個帶有“bundle”字樣,另一個沒有。其中帶有“bundle”字樣的表示動態(tài)庫是按混合模式編譯的,在使用的時候只需要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兩個動態(tài)庫。按官方說明,SQLite.Interop.dll是可以放與System.Data.SQLite.dll相同的目錄下,也可以放在x86或x64子目錄下,由System.Data.SQLite.dll根據(jù)系統(tǒng)類型調(diào)用。為了確認,下載如下兩個包來進行比較:

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

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

結果發(fā)現(xiàn)只有SQLite.Interop.*不同,其它文件都完全相同

讓使用了SQLite的.NET應用自適應32位/64位系統(tǒng)
[比較結果:只有SQLite.Interop.*不同]

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

讓使用了SQLite的.NET應用自適應32位/64位系統(tǒng)

最后需要做的就是在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”,共享給大家,歡迎下載使用。

◆ 51CTO資源站共享

◆ 360云盤共享


網(wǎng)頁名稱:讓使用了SQLite的.NET應用自適應32位/64位系統(tǒng)
標題URL:http://weahome.cn/article/ggsdpc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部