ASP.NET Core Web应用部署时出现EntityFrameworkCore版本冲突问题
解决ASP.NET Core升级到.NET 7后EF Core版本冲突问题
排查与修复步骤
1. 核对所有项目的NuGet包版本
- 逐个打开Web、BLL、DAL项目的NuGet包管理器,确认Microsoft.EntityFrameworkCore及其关联包(如Tools、SqlServer)全是7.0.2版本,没有6.0.2的残留引用。
- 发现6.0.2的包直接卸载,重新安装7.0.2。
2. 统一目标框架
- 右键每个项目→属性→应用,确认目标框架都是
.NET 7.0,别让任何项目停留在.NET 6.0。
3. 解决方案级NuGet包统一升级
- 右键解决方案→管理解决方案的NuGet包,在“已安装”标签筛选
Microsoft.EntityFrameworkCore,把所有项目的引用都升级到7.0.2。
4. 清理编译缓存与旧文件
- 删除所有项目的
bin和obj文件夹,这些地方可能存着旧版本编译产物。 - 清理NuGet缓存:工具→NuGet包管理器→包管理器设置→清除所有NuGet缓存。
- 命令行执行清理恢复:在解决方案根目录跑这两条命令:
dotnet clean dotnet restore
5. 检查项目引用方式
- 确认BLL引用的是DAL项目而非旧的DLL文件。如果之前是引用.NET 6编译的DAL.dll,改成项目引用,确保编译时用最新的DAL代码。
- 用
dotnet list package --include-transitive命令在每个项目目录下运行,查所有传递依赖,找到引用EF Core 6.0.2的第三方库,升级该库到支持.NET 7的版本。
6. 手动添加绑定重定向(可选)
- 在Web项目的
web.config里加绑定重定向,强制用7.0.2版本:<dependentAssembly> <assemblyIdentity name="Microsoft.EntityFrameworkCore" publicKeyToken="adb9793829ddae60" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-7.0.2.0" newVersion="7.0.2.0" /> </dependentAssembly>
7. 确认部署环境SDK版本
- 部署服务器必须装.NET 7 SDK,版本和本地一致。如果服务器用的还是.NET 6 SDK,编译时会自动拉旧版本库。
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

