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

多目标框架项目:不升级Microsoft.EntityFrameworkCore.SqlServer时升级Microsoft.Data.SqlClient

解决方案

1. 全局强制锁定依赖版本(推荐)

在解决方案根目录创建/修改Directory.Build.props文件,全局指定Microsoft.Data.SqlClient的版本为3.7.1,强制所有项目使用该版本,忽略间接依赖的旧版本:

<Project>
  <PropertyGroup>
    <!-- 启用集中版本管理 -->
    <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
  </PropertyGroup>
  <ItemGroup>
    <!-- 锁定Microsoft.Data.SqlClient版本 -->
    <PackageVersion Include="Microsoft.Data.SqlClient" Version="3.7.1" />
  </ItemGroup>
</Project>

添加后执行dotnet restore,NuGet会自动用指定版本替换所有间接引用的旧版本,同时保证多目标框架(.NET 4.7.1/.NET Core 8.0)的兼容性。

2. 单个项目排除旧依赖并手动引用新版本

如果不想全局生效,可在依赖Microsoft.EntityFrameworkCore.SqlServer的项目文件中,排除它自带的Microsoft.Data.SqlClient旧版本,再直接引用3.7.1:

<!-- 保留现有EF Core SqlServer引用,但排除其对Microsoft.Data.SqlClient的依赖 -->
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="你的当前EF版本">
  <ExcludePackageReferences>Microsoft.Data.SqlClient</ExcludePackageReferences>
</PackageReference>
<!-- 直接引用指定版本的Microsoft.Data.SqlClient -->
<PackageReference Include="Microsoft.Data.SqlClient" Version="3.7.1" />

3. 清理NuGet缓存并重新还原

若project.assets.json未更新,可能是缓存残留导致,执行以下命令清理缓存后重新还原:

# 清理所有NuGet本地缓存
dotnet nuget locals all --clear
# 重新还原解决方案
dotnet restore

4. 排查依赖链定位问题来源

如果以上方法仍无效,用以下命令找出哪个间接依赖还在引用1.1.3版本:

# 替换为你的项目路径
dotnet list YourProject.csproj package --include-transitive

根据输出找到依赖1.1.3的包,针对性调整该包的引用或排除其对Microsoft.Data.SqlClient的依赖。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 02:07:24