You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET项目编译后提示无法加载SQLite.Interop.dll如何解决?

根因说明

System.Data.SQLite类库分为托管封装层和原生实现层,报错中提到的SQLite.Interop.dll就是对应x86/x64架构的原生实现文件。Visual Studio调试时会自动根据项目配置将对应版本的依赖文件复制到输出目录,但MSI打包工具默认不会自动识别该非托管依赖,因此部署后运行就会触发加载失败错误:

Unable to load DLL 'SQLite.Interop.dll'

排查解决步骤

  • 第一步:明确项目目标平台
    打开项目属性页→生成选项卡,取消「首选32位」勾选,不要选择「Any CPU」作为目标平台,根据部署需求明确指定为x86或x64,避免运行时加载错架构的依赖文件。
  • 第二步:强制生成输出Interop文件
    在项目的app.config配置文件中添加如下节点,开启NuGet包自动复制Interop文件的逻辑:
    <configuration>
      <!-- 原有配置保留 -->
      <runtime>
        <System.Data.SQLite>
          <add key="CopySQLiteInteropFiles" value="True" />
        </System.Data.SQLite>
      </runtime>
    </configuration>
    
    重新编译后检查Release目录,会生成x86、x64两个子目录,内部包含对应架构的SQLite.Interop.dll文件。
  • 第三步:修正安装包打包规则
    打开MSI安装项目,将Release目录下的x86、x64目录、以及存放数据库的db目录都添加到安装包的应用程序根目录中,确保部署时所有依赖都会被复制到目标设备的主程序运行目录。
  • 可选精简方案:如果仅需要单一架构部署,可以直接将对应目标平台的SQLite.Interop.dll复制到主程序根目录,和System.Data.SQLite.dll放在同一级,打包时仅包含该文件即可,运行时会优先读取根目录下的Interop文件。

代码优化提示

你提供的数据库连接代码存在变量重复声明问题:类层级已经声明了共享变量SQLiteConn,但OpenConnection方法内又重新通过Dim SQLiteConn As New SQLiteConnection声明了局部变量,会导致类层级的共享连接变量永远为空,每次调用方法都会重复创建连接对象,建议删除方法内的局部变量声明,直接复用类层级的共享变量即可。

内容的提问来源于stack exchange,提问作者David A Stumpf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 23:36:00