2016-07-26 101 views
4

我目前正在嘗試使用Visual Studio創建一個使用SQLite的C#應用​​程序。我用NuGet爲我的程序安裝了SQLite,並在解決方案資源管理器中出現了三個引用(System.Data.SQLite,System.Data.SQLite.EF6,System.Data.SQLite.Linq)。Visual Studio C# - SQLite.Interop.dll未找到

當我在VS中執行我的應用程序時,一切正常。但是,無論何時我發佈(使用ClickOnce)並嘗試運行該應用程序,它都會崩潰,並出現以下錯誤: System.DllNotFoundException:無法加載DLL'SQLite.Interop.dll':無法找到指定的模塊(Exception從HRESULT:0x8007007E)

經過一番研究,我發現這個DLL在Debug文件夾中,並將其複製到我的程序的「.exe」版本創建的文件夾中(在發佈並執行「setup.exe」 )。這樣,應用程序運行良好。

但是我對這個解決方案並不滿意,因爲它看起來很髒。我不希望未來的用戶在安裝我的應用程序時不得不手動執行此操作!

因此,我的問題是:我能做些什麼來確保這個DLL與我的程序一起安裝?

注:我想這個職位的第一個答案: unable to load dll sqlite interop dll WPF 但我似乎並沒有爲我工作。

謝謝!

+0

複製 - http://stackoverflow.com/questions/13028069/unable-to-load -dll-sqlite-interop-dll?page = 1 – vapcguy

回答

0

如果它是一個可安裝的文件。即如果您正在創建安裝文件,則必須手動將dll添加到主輸出文件。

轉到安裝項目的屬性,並在配置設置中選擇先決條件SQLLite,選擇(複選框)從項目位置安裝它。

看看這是否解決了您的問題。

+0

感謝您的幫助!可悲的是,我無法在前提條件列表中找到SQLite,只有SQL Server ...我錯過了什麼嗎? (我對VS很新,而且我的版本是法文版的,這對於尋找菜單並沒有幫助) – Daneel

0

「注意:我嘗試了這篇文章的第一個答案:無法加載dll sqlite interop dll WPF但我似乎沒有爲我工作。」

我也試過了,終於搞定了。但重要的是:

  1. 將sqlite.interop.dll作爲現有項插入到要構建的項目的根目錄中。
  2. 在該文件的屬性中,確保其構建處理是'內容'(不是建議的嵌入式資源),當然,始終複製到輸出目錄。

希望能幫助擊敗那個煩人的bug。

5

默認情況下,dll sqlite.interop.dll不附帶SQLite的NuGet安裝。爲了解決這個問題,你需要添加dll,x86和x64。 在SQLite網站下載包含必要dll的包。將它們安裝到客戶端中或在分發之前將這些dll複製到您的項目中。

1

我也遇到了類似的問題,在我的Visual Studio 2017年和.NET框架4.5的環境下,情況是:

我正在開發一個Outlook加載項使用ClickOnce發佈它和SQLite作爲數據庫。在將SQLite庫安裝到NuGet的項目中之後,它在本地環境中完美工作,但在客戶端機器上彈出異常錯誤消息「Unable to load DLL'SQLite.Interop.dll'」。

我比較了兩種環境,發現DLL文件'SQLite.Interop.dll'沒有發佈到客戶機上,我們可以在下面的圖中看到。 enter image description here

我在本地環境搜索「SQLite.Interop.dll」,發現它被保存在以下文件夾「(項目)\包\ System.Data.SQLite.Core.1.0.105.2 \編譯\」爲具體的.NET框架 enter image description here

所以,我的解決辦法是增加這兩個DLL庫到項目,然後才能發佈使用ClickOnce的客戶機。 enter image description here

(注意:所選擇的DLL版本應該是在你的環境中的.NET Framework版本爲相同)

相關問題