You need to enable JavaScript to run this app. VS2019 NuGet包管理器无法还原System.Data.SQLite.Core的Interop dll
优惠活动
大模型
产品
解决方案
定价
更多

VS2019 NuGet包管理器无法还原System.Data.SQLite.Core的Interop dll

问题根因

这是使用packages.config格式管理System.Data.SQLite.Core包的.NET Framework项目的典型问题,核心原因如下:

  • SQLite.Interop.dll是非托管依赖项,不直接加入项目的托管引用列表,该文件的复制逻辑是通过NuGet包内置的MSBuild构建目标,在构建阶段根据目标CPU架构自动拷贝到输出目录
  • 常规的「还原NuGet包」操作仅校验本地是否存在对应版本的NuGet包,不会自动将包的构建目标重新注册到项目配置中,因此还原后直接构建时,复制Interop文件的步骤不会执行,导致输出目录缺失该文件
  • 执行Update-Package –reinstall命令时会重新执行包的完整安装流程,将对应的构建目标重新写入项目文件,因此后续构建可以正常复制文件
解决方案

方案1:修复项目构建目标注册(推荐)

  • 右键项目选择「卸载项目」,再次右键点击卸载后的项目选择「编辑.csproj文件」
  • 确认文件底部存在以下导入节点,若缺失则手动补充,注意将代码中的[你的包版本号]替换为实际安装的System.Data.SQLite.Core版本:
<Import Project="..\packages\System.Data.SQLite.Core.[你的包版本号]\build\net4x\System.Data.SQLite.Core.targets" Condition="Exists('..\packages\System.Data.SQLite.Core.[你的包版本号]\build\net4x\System.Data.SQLite.Core.targets')" />
  • 保存文件后重新加载项目,后续构建时就会自动执行Interop文件的复制逻辑,无需每次重新安装包

方案2:显式托管Interop文件

如果不想依赖NuGet包的构建目标,可以手动管理依赖文件:

  • 从本地NuGet包缓存的System.Data.SQLite.Core.[版本号]\build\net4x\目录下,取出x86和x64架构的SQLite.Interop.dll文件
  • 在项目中新建lib\x86和lib\x64两个文件夹,分别放入对应架构的dll文件
  • 分别选中两个dll文件,右键打开属性面板,将「生成操作」设置为「内容」,「复制到输出目录」设置为「如果较新则复制」
  • 提交代码时将这两个文件一并提交到Git仓库,后续克隆后构建会自动复制到输出目录

方案3:调整NuGet全局配置

在解决方案根目录新建/修改nuget.config文件,添加以下配置,让构建时自动执行包的目标注册逻辑:

<configuration>
  <packageRestore>
    <add key="automaticallyRunPackageRestoreOnBuild" value="True" />
  </packageRestore>
</configuration>

如果项目切换为PackageReference格式管理NuGet包,不需要额外配置即可自动处理该依赖的复制逻辑。

内容的提问来源于stack exchange,提问作者JNygrenLT

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 16:36:11