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

System.Data.SqlClient包引用无法在项目引用间传递是何原因

System.Data.SqlClient跨项目引用不传递问题原因及修复方案

常见原因

  • PackageReference传递规则限制
    如果SqlClientDependent是类库项目,当上层项目目标框架(比如.NET Framework)默认包含GAC版本的System.Data.SqlClient时,构建系统会默认判定无需额外复制Nuget版本的dll到上层项目输出目录,引发版本不匹配或缺失报错。
    如果SqlClientDependent项目中System.Data.SqlClient的PackageReference配置了<PrivateAssets>all</PrivateAssets>或包含compile属性,该依赖会被标记为仅当前项目使用,不会向上游传递。
  • 目标框架兼容性问题
    System.Data.SqlClient本身已停止迭代,仅兼容旧版本.NET Framework和.NET Core/.NET 5+的早期版本,当上下层项目目标框架不一致(比如类库用.NET Standard 2.0,上层用.NET 7+)时,传递逻辑会出现异常。

修复方案

  • 检查SqlClientDependent项目.csproj中System.Data.SqlClient的引用配置,移除错误的PrivateAssets设置,可显式配置强制传递:
<PackageReference Include="System.Data.SqlClient" Version="4.8.6">
  <PrivateAssets>none</PrivateAssets>
</PackageReference>
  • 长期兼容方案建议将所有项目中的System.Data.SqlClient替换为官方迭代的Microsoft.Data.SqlClient包,传递逻辑和多框架兼容性更稳定。
  • 临时修复可直接在上层项目中显式安装对应版本的System.Data.SqlClient包,跳过传递依赖判定。
  • 检查上层项目的绑定重定向配置,确认没有强制排除System.Data.SqlClient引用的规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:24:04