最近項目中要用到本地的文件型數(shù)據(jù)庫,很自然的選擇了SQLite。
以前在.net framework 2.0/3.5下使用過SQLite,一直都沒有什么問題。
不過這次在.net framework 4.0中開始是怎么都不好用,后來看到網(wǎng)上有人說System.Data.SQLite(1.0.66)是在.net framework 2.0平臺下編譯的,有的給出了在4.0平臺下的配置方法,看看這個版本是2010年更新了好像就再也沒動過。不會吧,這么好的項目應(yīng)該不會掛掉吧。又一頓谷哥后,發(fā)現(xiàn)了http://system.data.sqlite.org/,果然還活著,而且已經(jīng)有.net framework 4.0平臺下編譯的版本了(1.0.81),用上后發(fā)現(xiàn)Spring.NET還沒有支持到這個版本的DbPrivoder,照著文檔,打開Spring.NET源碼,按照文檔上說的參考以前版本的寫了個配置文件(其實就是把以前版本號換了換),F(xiàn)5,可以正常運行了。
開發(fā)中沒問題了,但是到客戶機器部署時又出問題了,有的機器好用有的機器不好用。單獨做了個讀寫SQLite的小程序,最終確定還是System.Data.SQLite的問題。
報的異常是 Could not load file or assembly 'System.Data.SQLite.dll' or one of its dependencies.
但是System.Data.SQLite.dll、System.Data.SQLite.dll兩個文件都在啊,用ILSpy打開System.Data.SQLite.dll看了一下,引用的貌似都是framework本身的東西了。
又回去度娘、谷哥,看到有人說是需要用到SQLite.Interop.dll,于是直接拷貝到目錄、引用都試過了,還是報相同的異常。
也有人說是32、64位的問題,但是我的都是32位的,只是個客戶端程序,也沒有IIS等環(huán)境的影響。
繼續(xù)回去找谷哥問問吧,看到stackoverflow有個回答說 System.Data.SQLite.dll is a mixed assembly, i.e. it contains both managed code and native code.,下面還有人說需要安裝Microsoft Visual C++ 2010 SP1 Redistributable Package (x86),看起來有點道理,試了一下果然問題解決了。
一直以來都以為System.Data.SQLite只要安裝了.net framework就可以讀SQLite數(shù)據(jù)庫了,原來還需要安裝Microsoft Visual C++ Redistributable Package啊。