System.DllNotFoundException: 無法加載 DLL“SQLite.Interop.DLL”


這個問題是在綠化System.Data.SQLite.dll的時候出現的
[1]在下面的網站下載的1.0.66版本的單文件整合型的dll是可以直接使用的
http://sqlite.phxsoftware.com/
[2]在下面的網站下載的Setups for 32-bit Windows (.NET Framework 3.5 SP1)的安裝文件安裝后也是可以解決問題的
http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki
但上面兩種都不見得是理想的解決方案
[1]方案的dll是 Apr 18, 2010更新的,太老了
[2]方案需要在電腦上進行一次seup的安裝,而SQLite的dll,眾所周知是可以單獨調用就可以的
於是在[2]Precompiled Binaries for 32-bit Windows (.NET Framework 3.5 SP1)成了最佳解決方案
下載來是一個zip文件,里面的dll直接放在應用程序目錄下就可以了
這樣的zip也有兩個選擇,
[3]一個是帶有bundle字樣的單dll形式的,經測試,在.Net 2.0安裝正確的前提下,這個方案也是可以解決問題的
[4]還有一種是不帶有bundle字樣的,內會多出一個SQLite.Interop.DLL文件,這個文件雖然在編程的時候不用添加引用,但是在程序運行的時候需要和System.Data.SQLite.dll放在同一目錄下才可以
問題出現在[4]這一用法上,當我使用這一方案的時候,在開發環境一切正常,在實際的服務器上部署的時候出現了標題上的問題了,我的SQLite.Interop.DLL分明就在指定的目錄下,為什么說沒有呢?
我如果在實際環境中安裝一次[2]的setup版本的驅動程序,問題就解決了,但是奇怪的是我當我卸載了這個setup驅動之后,問題不會再次出現
我用監控軟件監控了所有這個setup包所作的一切,注冊表,環境變量,dll等,再卸載的時候全部刪除,但是問題還是沒有再現
百思不得其解。。。。。
最后在官網下載區的一句話
This binary package features the mixed-mode assembly and contains all the binaries for the x86 version of the System.Data.SQLite 1.0.74.0 (3.7.7.1) package. The Visual C++ 2008 SP1 runtime for x86 and the .NET Framework 3.5 SP1 are required.
說是想要使用這個綠色版的dll就需要安裝Visual C++ 2008 SP1 runtime,我才發現,setup驅動安裝的同時會在電腦上安裝vc2008運行時,而這一過程沒有在安裝的過程中有任何提示並且vc2008運行時不會隨着setup的卸載而卸載,
問題解決了,在想要部署[4]方案綠化版本的System.Data.SQLite.dll電腦上安裝vc2008[下載]運行時就可以了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM