【问题标题】:Unable to load SQLite Interop DLL无法加载 SQLite 互操作 DLL
【发布时间】: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


【解决方案1】:

1- 在项目的根目录中创建一个库,然后复制其中的 SQLite.Interop.dll。

将此添加到您的 .csproj 文件中:

  <ItemGroup>
    <ContentWithTargetPath Include="lib\SQLite.Interop.dll">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <TargetPath>SQLite.Interop.dll</TargetPath>
    </ContentWithTargetPath>
  </ItemGroup>

【讨论】:

    猜你喜欢
    • 2011-12-25
    • 2015-10-24
    • 2014-06-20
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多