Visual Studio C# - SQLite.Interop.dll未找到
我目前正在尝试使用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 但我似乎并没有为我工作。
谢谢!
见使用本地库预加载在https://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki
您可能需要包括下其他的SQLite DLL的x86和x64文件夹。
谢谢你的帮助!我将x86文件夹中的dll文件包含在我的projet中的Existing Element中,并将其设置为“始终复制”,现在,当我发布我的应用程序时,它似乎可以正常工作! – Daneel
如果它是一个可安装的文件。即如果您正在创建安装文件,则必须手动将dll添加到主输出文件。
转到安装项目的属性,并在配置设置中选择先决条件SQLLite,选择(复选框)从项目位置安装它。
看看这是否解决了您的问题。
感谢您的帮助!可悲的是,我无法在前提条件列表中找到SQLite,只有SQL Server ...我错过了什么吗? (我对VS很新,而且我的版本是法文版的,这对于寻找菜单并没有帮助) – Daneel
“注意:我尝试了这篇文章的第一个答案:无法加载dll sqlite interop dll WPF但我似乎没有为我工作。”
我也试过了,终于搞定了。但重要的是:
- 将sqlite.interop.dll作为现有项插入到要构建的项目的根目录中。
- 在该文件的属性中,确保其构建处理是'内容'(不是建议的嵌入式资源),当然,始终复制到输出目录。
希望能帮助击败那个烦人的bug。
默认情况下,dll sqlite.interop.dll不附带SQLite的NuGet安装。为了解决这个问题,你需要添加dll,x86和x64。 在SQLite网站下载包含必要dll的包。将它们安装到客户端中或在分发之前将这些dll复制到您的项目中。
我也遇到了类似的问题,在我的Visual Studio 2017年和.NET框架4.5的环境下,情况是:
我正在开发一个Outlook加载项使用ClickOnce发布它和SQLite作为数据库。在将SQLite库安装到NuGet的项目中之后,它在本地环境中完美工作,但在客户端机器上弹出异常错误消息“Unable to load DLL'SQLite.Interop.dll'”。
我比较了两种环境,发现DLL文件'SQLite.Interop.dll'没有发布到客户机上,我们可以在下面的图中看到。
我在本地环境搜索“SQLite.Interop.dll”,发现它被保存在以下文件夹“(项目)\包\ System.Data.SQLite.Core.1.0.105.2 \编译\”为具体的.NET框架
所以,我的解决办法是增加这两个DLL库到项目,然后才能发布使用ClickOnce的客户机。
(注意:所选择的DLL版本应该是在你的环境中的.NET Framework版本为相同)
复制 - http://stackoverflow.com/questions/13028069/unable-to-load -dll-sqlite-interop-dll?page = 1 – vapcguy