无法加载dll sqlite interop dll WPF

时间:2014-12-28 16:54:35

标签: c# wpf sqlite

我正在做一个WPF应用程序并尝试部署/发布它。只要我在Visual Studio中运行应用程序,一切都很好。但是当我尝试将部署文件[从发布文件夹]分离到另一个位置并尝试运行时,我收到错误。

  

无法加载DLL' SQLite.Interop.dll':找不到指定的模块。 (HRESULT异常:0x8007007E)

我从发布文件夹中复制了 App.exe + App.exe.config + System.Data.SQLite.dll 文件。

添加信息:

我已经安装了SQLite Nuget包。

通过取消选中更喜欢32位并在解决方案属性中将平台设置为任何CPU来尝试。

我是WPF的新手,如果我的部署过程或其他任何错误,有人可以纠正我吗?

更新

我还尝试将所有与SQLite一起复制的DLL复制到新的位置以及解决方案exe文件,但是弹出了同样的错误。

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

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

6 个答案:

答案 0 :(得分:2)

在解决方案资源管理器中,单击名称项目上的右键并选择 ADD -> Existing Item。然后将搜索更改为All Files (*.*)并打开Sqlite.Interop.dll。你可以在bin\debug\x86 (or x64)找到它 现在你有了你的项目中的dll(如果你右键单击它,你可以看到“Build action = content”)。在“Build Action = Embedded Resource”中更改它。

重新发布,就是这样。

答案 1 :(得分:0)

还要确保那些dll存在于exe所在的位置:

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

如果没有从调试文件夹中复制它们

答案 2 :(得分:0)

刚刚在我的VS2015社区WinForms项目中通过以下方式解决了这个问题:

  1. 将两个文件夹添加到项目根目录(x86,x84)
  2. 将x86和x64 interop dll复制到这些文件夹中(可以从bin / debug / x86和x64中获取这些文件夹。
  3. 然后"添加现有项目"将interop dll包含在相应文件夹中的项目中。
  4. 右键点击项目文件夹中的每个dll,然后选择' content'并且'始终复制'。
  5. 这一切都来自记忆,所以要相应调整。

    曾尝试过各种其他选择,但都没有。

答案 3 :(得分:0)

作为SQLite wiki says,您的应用程序部署必须是:

enter image description here

所以你需要遵守规则。找到与您的目标平台匹配的dll并将其放置在位置中,如图所示。 Dll可以在YourSolution / packages / System.Data.SQLite.Core。%version%/。中找到。

我在应用程序部署方面遇到了问题,所以我刚刚将SQLite.Interop.dll添加到我的项目中,在安装项目中添加了x86文件夹到AppplicationFolder,并添加了对dll的文件引用。

答案 4 :(得分:-1)

Mauro的回答很有效。其他 64 interop.dll 对我来说不起作用。您还需要将复制到输出目录更改为始终复制或更新版本。如果你做了86,你可以离开任何cpu,并保持 32

答案 5 :(得分:-1)

对我来说,这并不像Mauro上面提到的那样(https://stackoverflow.com/a/38611577/1647083)。

我通过将构建操作设置为“content”来实现它。