簡體   English   中英

無法加載dll sqlite互操作dll WPF

[英]unable to load dll sqlite interop dll WPF

我正在做一個WPF應用程序,並嘗試部署/發布它。 只要我在Visual Studio中運行應用程序,一切都很好。 但是,當我嘗試將部署文件[從Release文件夾]分離到另一個位置並嘗試運行時,出現了錯誤。

無法加載DLL'SQLite.Interop.dll':找不到指定的模塊。 (來自HRESULT的異常:0x8007007E)

我從Release文件夾復制了App.exe + App.exe.config + System.Data.SQLite.dll文件。

附加信息:

我已經安裝了SQLite Nuget軟件包。

嘗試取消選中“首選32位”,然后在解決方案屬性中將“平台”設置為“任何CPU”。

我是WPF的新手,如果我的部署過程或其他任何內容有誤,是否有人可以糾正我?

更新:

我還嘗試通過將所有DLL實域復制到SQLite以及解決方案exe文件復制到新位置,但是彈出了相同的錯誤。

我放在一起的文件列表是:

 App.exe
 App.exe.config
 System.Data.SQLite.dll
 System.Data.SQLite.EF6.dll
 System.Data.SQLite.Linq.dll

在解決方案資源管理器中,在名稱項目上單擊鼠標右鍵,然后選擇ADD -> Existing Item 然后將搜索更改為“ All Files (*.*)並打開Sqlite.Interop.dll 您可以在bin\\debug\\x86 (or x64)找到它。現在在項目中有了dll(如果右鍵單擊它,則可以看到“ Build action = content”)。 在“構建操作=嵌入式資源”中進行更改。

重新發布,僅此而已。

還確保這些dll位於exe所在的位置:

System.Data.SQLite.dll
System.Data.SQLite.EF6.dll
System.Data.SQLite.Linq.dll

如果沒有,請從調試文件夾復制它們

剛剛在我的VS2015社區WinForms項目中解決了此問題,方法是:

  1. 將兩個文件夾添加到項目根目錄(x86,x84)
  2. 將x86和x64互操作dll復制到這些文件夾中(可以從bin / debug / x86和x64中獲取這些文件。
  3. 然后“添加現有項目”以獲取互操作dll包含在項目中的相應文件夾中。
  4. 右鍵單擊項目文件夾中的每個dll,然后選擇“內容”和“始終復制”。

這些全部來自內存,因此請進行相應調整。

曾嘗試過各種其他選擇,但沒有一個可行。

如SQLite Wiki所述 ,您的應用程序部署必須是:

在此處輸入圖片說明

因此,您需要遵守規則。 找到與您的目標平台匹配的dll並將其放在適當的位置,如圖所示。 可以在YourSolution / packages / System.Data.SQLite.Core。%version%/中找到Dll。

我在應用程序部署方面遇到了問題,因此我只是將正確的SQLite.Interop.dll添加到了我的項目中,將x86文件夾添加到了安裝項目中的AppplicationFolder中,並添加了對dll的文件引用。

毛羅的答案很不錯。 否則, 64個interop.dll對我不起作用。 您還需要將復制更改為輸出目錄以始終復制或更新版本。 然后,如果您使用86,則可以保留任何CPU,而將perfer保留為32

對我來說,它並沒有像Mauro上面建議的那樣完全起作用( https://stackoverflow.com/a/38611577/1647083 )。

我通過將構建操作設置為“內容”來使其工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM