2012-01-18 91 views
5

我有一個完美的Windows窗體C#.NET 4應用程序,它使用SQLite3數據庫文件來存儲數據和顯示窗體。無法加載程序集System.Data.SQLite.dll

當我在任何其他機器上部署我的應用程序,然後在開發機器上,我得到一個異常拋出,它的消息是「無法加載組件System.Data.SQLite.dll或其依賴項之一。指定的模塊不能被發現。」

項目中的System.Data.SQLite.dll引用設置爲Copy Local = True。另外,我嘗試用Assembly.LoadFile手動加載程序集。該dll被放置在輸出目錄中。我也嘗試將平臺目標設置爲任何CPU以及x86,沒有區別。我正在使用的所有機器都是32位的。這裏有什麼問題?爲什麼我的應用程序試圖加載程序集並找不到它?

謝謝!

+1

看一看SO主題 - http://stackoverflow.com/questions/1278929/could-not-load-file-or-assembly-系統數據sqlite – adatapost 2012-01-18 02:34:13

+0

謝謝,但這看起來像一個Web應用程序的解決方案。我是一個Windows窗體應用程序,你附加的解決方案不起作用。 – user1094786 2012-01-18 06:14:38

+0

你如何部署?你有一個安裝項目,複製釋放文件夾? – MPelletier 2012-01-19 04:27:54

回答

13

將我的程序發佈到單獨的計算機後,發生同樣的問題。在單獨的計算機上安裝Microsoft Visual C++ 2010可再發行組件包(x86)解決了問題。

注:單獨的計算機已經有微軟的V​​isual C++ 2010再發行組件包()安裝,需要在版本。

+0

鏈接已經死了...... – jjxtra 2014-01-23 18:29:43

+0

謝謝你讓我知道,我只是想表達我最初找到問題答案的地方。如果問題的原因是相同的,我想我的解釋就足夠了。 – 2014-01-25 22:53:42

6

「System.Data.SQLite.dll」需要「msvcr100.dll」,它是其中的一個依賴關係。只有當您安裝最新的「Microsoft Visual C++ Redistributable」或任何其他內部提供此產品的產品時纔可用。

例如,VS2010會默認安裝C++可再發行。那是你的應用程序亙古不變的一些工程機的原因,但在人的作品。

你可以嘗試在你的應用程序bin文件夾粘貼「msvcr100.dll」和如果你不想在所有的電腦上安裝VC++ 2010 Redist,請發給我。

+0

謝謝 - 這在我的情況下做到了。 – Eternal21 2014-01-30 16:05:19