2016-07-26 100 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版本为相同)

相关问题