【发布时间】:2017-01-12 09:24:22
【问题描述】:
我正在尝试在我的 Windows 10 机器上安装 SQLite。我想为我的项目使用 SQLite 数据库。目标框架是.net 4.0,我使用的是VS2010。
SQLite .NET 下载页面有以下内容:
64 位 Windows (.NET Framework 4.0) 的设置 sqlite-netFx40-setup-bundle-x64-2010-1.0.104.0.exe (14.27 MiB) 此安装程序包具有混合模式程序集,将为 x64 版本的 System.Data.SQLite 1.0.104.0 (3.15.2) 程序包安装所有必要的运行时组件和依赖项。包含适用于 x64 的 Visual C++ 2010 SP1 运行时。需要 .NET Framework 4.0。
sqlite-netFx40-setup-x64-2010-1.0.104.0.exe (14.26 MiB) 此安装包将为 x64 版本的 System.Data.SQLite 1.0.104.0 (3.15.2) 包安装所有必要的运行时组件和依赖项。包含适用于 x64 的 Visual C++ 2010 SP1 运行时。需要 .NET Framework 4.0。
当我使用 sqlite-netFx40-setup-x64-2010-1.0.104.0.exe 安装并在我的项目中使用 SQLite 时,我收到错误“无法加载 DLL 'SQLite.Interop.dll':指定的模块可以找不到。(来自 HRESULT 的异常:0x8007007E)”。为了解决这个问题,我必须复制调试文件夹中的互操作 dll 文件。
但是,当我使用 sqlite-netFx40-setup-bundle-x64-2010-1.0.104.0.exe 安装时,我可以运行我的程序而无需互操作 dll。它不会给出任何错误,只需要 System.Data.SQLite.dll。
不知道为什么会这样?
【问题讨论】:
-
我认为 .NET 在查找 DLL 时能够遍历已知文件夹位置。安装 SQLite 后 System.Data.SQLite.dll 是否存在于 System32 文件夹中?
-
我没有检查,但问题不在于 System.Data.SQLite.dll。 interop dll 在前一个安装中不存在,而在后一个安装中存在。
-
啊,完全正确。我的问题仍然存在,互操作娃娃是否存在于您系统的其他地方?
-
它没有。事实上,我只使用 sqlite dll 创建了一个应用程序并将其复制到另一个系统并且它工作。只有 2 个文件,即 system.data.sqlite dll 和我的应用程序 exe。如果我使用第二个设置,那么我需要互操作 dll。
标签: .net vb.net sqlite visual-studio-2010