wpf - 为什么我的 WPF 应用程序中出现 "Unable to load DLL ' sqlite 3'"?

标签 wpf sqlite visual-studio-2013 nugetgallery runtime-packages

我将我认为必要的 SQLite(和 sqlite-net)包添加到我的应用程序中。但是,在运行它时,我得到一个异常:

System.DllNotFoundException 未被用户代码处理 HResult=-2146233052 Message=Unable to load DLL 'sqlite3': 找不到指定的模块。 (异常(exception)

我安装了以下 SQLite 包:

enter image description here

缺少什么?

更新

我尝试了 ajawad987 的建议,但仍然遇到相同的运行时错误,即使我得到了这个:

enter image description here

...还有这个:

enter image description here

更新 2

这个运行时异常发生的地方(在 SQLite.cs 中)对我来说似乎很奇怪:

如果银光|| USE_CSHARP_SQLITE

        var r = SQLite3.Open (databasePath, out handle, (int)openFlags, IntPtr.Zero);

其他

        // open using the byte[]
        // in the case where the path may include Unicode
        // force open to using UTF-8 using sqlite3_open_v2
        var databasePathAsBytes = GetNullTerminatedUtf8 (DatabasePath);
        var r = SQLite3.Open (databasePathAsBytes, out handle, (int) openFlags, IntPtr.Zero);

结束

但我正在使用 C#,那么为什么失败的行甚至在运行? (它在“else” block 中失败)?

最佳答案

您的项目构建是否设置为Any CPU?对于 SQLite3,您需要将其设置为 x86x64x86 路线将在设备之间产生更多兼容性,因此我推荐该选项,除非您执行某些特定的 64 位操作。

编辑:您还需要从 Sqlite's main site 手动下载实际的 Sqlite DLL。 .您需要的文件名为 sqlite-dll-win32-x86-3080702.zip。从该 ZIP 中提取 DLL,并将其作为内容文件 添加到您的项目中。将属性工具窗口中的复制到输出目录选项设置为始终复制,然后重建。还要确保您的项目设置为如上所述的 x86 选项。

这应该希望可以解决问题……我已经有一段时间没有在 .NET 应用程序中使用 Sqlite 了。

旁注:您下载的 Nuget 包实际上只包含真正的 Sqlite DLL 周围的 C# 包装器库。

关于wpf - 为什么我的 WPF 应用程序中出现 "Unable to load DLL ' sqlite 3'"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27328490/

相关文章:

visual-studio-2013 - 使用 Visual Studio 2013 的 Enterprise Library 6 中的配置工具/控制台抛出 FileNotFoundException

c# - 数据绑定(bind)到 EF 实体或 ViewModel

c# - WPF RadioButton 命令绑定(bind)

javascript - 使用javascript将大数组保存到Sqlite数据库中

c# - 如何在 ListView 中选择一条记录并在代码隐藏方法中引用它?

python - 如何在 ponyorm 中进行行计数? Python

C++ MySQL驱动->连接VS2013

c# - Visual Studio 2013 在打开 xsl 时崩溃

wpf - 显示输入,EncoderDevice,WPF

c# - 学习 WPF 会提高我的 ASP.NET 技能吗?