Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法加载dll sqlite互操作dll WPF_C#_Wpf_Sqlite - Fatal编程技术网

C# 无法加载dll sqlite互操作dll WPF

C# 无法加载dll sqlite互操作dll WPF,c#,wpf,sqlite,C#,Wpf,Sqlite,我正在做一个WPF应用程序,并尝试部署/发布它。只要我在VisualStudio中运行应用程序,一切都很好。但当我尝试将部署文件[从发布文件夹]分离到另一个位置并尝试运行时,出现了错误 无法加载DLL“SQLite.Interop.DLL”:找不到指定的模块。(来自HRESULT的异常:0x8007007E) 我从发布文件夹复制了App.exe+App.exe.config+System.Data.SQLite.dll文件 其他信息: 我已经安装了SQLite Nuget包 在解决方案属性中,取

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

无法加载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

还要确保exe所在的位置存在这些DLL:

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

如果没有,请从“解决方案资源管理器”中的调试文件夹中复制它们,单击“项目”名称上的右键,然后选择
添加->现有项目
。然后将搜索更改为
All Files(*.*)
,并打开
Sqlite.Interop.dll
。您可以在
bin\debug\x86(或x64)
现在项目中有了dll(如果右键单击它,您可以看到“buildaction=content”)。在“构建操作=嵌入式资源”中更改它


重新出版,就这样。

毛罗的答案非常有效。除此之外,64 interop.dll对我不起作用。您还需要将“复制到输出目录”更改为“始终复制”,或者更改为更新版本。然后,如果执行86,则可以离开任何cpu,并离开perfer32

我刚刚在VS2015社区WinForms项目中解决了这个问题:

  • 将两个文件夹添加到项目根目录(x86、x84)
  • 将x86和x64互操作dll复制到这些文件夹中(可以从bin/debug/x86和x64获取)
  • 然后“添加现有项”以获取项目中相应文件夹中包含的互操作dll
  • 右键单击项目文件夹中的每个dll,然后选择“内容”和“始终复制”
  • 这都是内存中的数据,因此请进行相应调整


    我尝试过各种各样的其他选择,但没有一个奏效。

    对我来说,它并没有像毛罗上面所建议的那样奏效()

    我通过将构建操作设置为“content”使其正常工作。

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

    因此,您需要遵循这些规则。找到与目标平台匹配的dll并将其放置在适当的位置,如图所示。dll可以在您的解决方案/packages/System.Data.SQLite.Core.%version%/中找到


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

    感谢您的回复Joseph,但不幸的是,我也尝试了建议的解决方案,但它不起作用。您能否查看更新的question.this在我的SQLiteConnection构造函数中抛出了一个异常,破坏了已经运行的东西。这些东西去哪里了?