我正在做一个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
答案 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项目中通过以下方式解决了这个问题:
这一切都来自记忆,所以要相应调整。
曾尝试过各种其他选择,但都没有。
答案 3 :(得分:0)
作为SQLite wiki says,您的应用程序部署必须是:
所以你需要遵守规则。找到与您的目标平台匹配的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”来实现它。