You need to enable JavaScript to run this app. 引用含System.Data.SQLite的DLL加载SQLite.Interop.dll异常问题
优惠活动
大模型
产品
解决方案
定价
更多

引用含System.Data.SQLite的DLL加载SQLite.Interop.dll异常问题

跨项目引用下SQLite.Interop.dll未自动输出的配置操作

此前在类库A项目中设置的“SQLite.Interop.dll始终复制到输出目录”规则,仅对A项目自身的编译输出生效。当可执行程序B引用A项目时,Visual Studio 默认的引用传递逻辑会自动过滤非程序集类型的附属关联文件,因此不会把SQLite.Interop.dll同步到B的输出目录。
以下是需要完成的额外配置:

  • 调整A项目中SQLite.Interop.dll的目录结构
    不要将不同平台的SQLite.Interop.dll直接平铺在项目根目录,按照System.Data.SQLite的标准目录结构放置:
    • 32位版本文件路径:项目根目录/runtimes/win-x86/native/SQLite.Interop.dll
    • 64位版本文件路径:项目根目录/runtimes/win-x64/native/SQLite.Interop.dll
      对两个路径下的SQLite.Interop.dll,将文件属性设置为内容,复制到输出目录选项选择始终复制。
  • 给A项目添加跨项目文件传递标记
    打开A项目的.csproj编辑视图,在<ItemGroup>节点下添加如下配置,显式标记SQLite.Interop.dll为可跨项目传递的内容文件:
    <ItemGroup>
      <Content Include="runtimes\**\SQLite.Interop.dll">
        <CopyToOutputDirectory>Always</CopyToOutputDirectory>
        <CopyToPublishDirectory>Always</CopyToPublishDirectory>
      </Content>
    </ItemGroup>
    
  • 修改B项目对A的引用配置
    打开B项目的.csproj编辑视图,找到对A项目的引用节点,添加PrivateAssets="none"属性,确保引用A时,A关联的所有附属文件不会被自动过滤:
    <ProjectReference Include="类库A的项目路径">
      <Private>true</Private>
      <PrivateAssets>none</PrivateAssets>
    </ProjectReference>
    
  • 校验配置有效性
    依次重新编译类库A和可执行程序B,检查B的输出目录下是否生成与A项目结构一致的runtimes目录、是否存在对应平台的SQLite.Interop.dll。如果是发布场景,需在B的发布配置中勾选包含所有引用的程序集,避免发布流程过滤掉Interop文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.05 09:06:05