Dan*_*eel 5 c# sqlite dll visual-studio-2015
我目前正在尝试使用Visual Studio创建一个使用SQLite的C#应用程序.我使用NuGet为我的程序安装了SQLite,并且在解决方案资源管理器(System.Data.SQLite,System.Data.SQLite.EF6,System.Data.SQLite.Linq)中出现了三个引用.
当我在VS中执行我的应用程序时,一切正常.但是,每当我发布它(使用ClickOnce)并尝试运行应用程序时,它都会崩溃并出现以下错误: System.DllNotFoundException:无法加载DLL'SQLite.Interop.dll':找不到指定的模块(HRESULT异常) :0x8007007E)
经过一些研究,我在Debug文件夹中找到了这个dll并将其复制到我的程序的".exe"版本的文件夹中(在发布并执行"setup.exe"之后).这样,应用程序运行良好.
但我对这个解决方案并不满意,因为它看起来很脏.我不希望将来的用户在安装我的应用程序时必须手动执行此操作!
因此,我的问题是:我该怎么做才能确保这个dll与我的程序一起安装?
注意:我尝试了这篇文章的第一个答案: 无法加载dll sqlite interop dll WPF 但我似乎没有为我工作.
谢谢 !
请参阅使用本机库预加载在https://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki
您可能需要在其他SQLite DLL下包含x86和x64文件夹.
请使用重复问题的答案:https : //stackoverflow.com/a/60176344/3634867
不要自己存储dll并手动复制到/bin,它会失去对版本更新和依赖的控制。
TL; 博士;
对于旧的 csproj 文件:
Run Code Online (Sandbox Code Playgroud)<PropertyGroup> <ContentSQLiteInteropFiles>true</ContentSQLiteInteropFiles> <CopySQLiteInteropFiles>false</CopySQLiteInteropFiles> <CleanSQLiteInteropFiles>false</CleanSQLiteInteropFiles> <CollectSQLiteInteropFiles>false</CollectSQLiteInteropFiles> </PropertyGroup>对于新的 csporj 文件:(即以 开头的项目
<Project Sdk="Microsoft.NET.Sdk.*">)Run Code Online (Sandbox Code Playgroud)<PackageReference Include="System.Data.SQLite.Core" Version="1.0.110" PrivateAssets="none"/>
我在Visual Studio 2017和.NET Framework 4.5的环境中也遇到了类似的问题,情况是:
我正在使用ClickOnce开发一个Outlook Add Ins来发布它,并将SQLite作为数据库发布.从NuGet将SQLite库安装到项目中后,它在本地环境中完美运行,但在客户端计算机上弹出异常错误消息"无法加载DLL'SQLite.Interop.dll'".
我比较了这两个环境,发现DLL文件'SQLite.Interop.dll'尚未发布到我们可以在下图中看到的客户端计算机上.

我在本地环境中搜索了"SQLite.Interop.dll",发现它保存在以下文件夹"{project}\packages\System.Data.SQLite.Core.1.0.105.2\build \"中,用于特定的.Net FrameWork

因此,我的解决方案是将这两个DLL库添加到项目中,然后可以使用ClickOnce将它们发布到客户端计算机.

(注意:所选的DLL版本应与您环境中的.NET Framework版本相同.)
默认情况下,dll sqlite.interop.dll没有附带SQLite的NuGet安装.要解决此问题,您需要添加dll,x86和x64.在SQLite网站下载包含必要dll的包.在分发之前,将它们安装在客户端中或将这些dll复制到项目中.
| 归档时间: |
|
| 查看次数: |
22786 次 |
| 最近记录: |