ASP.Net Core项目Corp.App构建失败,遭遇NuGet错误NU1106版本冲突
解决ASP.NET Core项目NuGet错误NU1106:包版本冲突
问题根源
你的Corp.App目标框架是**.NET 7**,但依赖链中存在版本冲突:
Corp.Package和Corp.Project(无论作为项目引用还是包引用)都要求Microsoft.Extensions.Logging.Abstractions >=8.0.0- 项目间接依赖的
Microsoft.Extensions.Logging 6.0.0固定绑定Microsoft.Extensions.Logging.Abstractions 6.0.0,该版本与8.0.0不兼容 - 同时
Microsoft.Extensions.DependencyInjection 7.0.0要求Microsoft.Extensions.DependencyInjection.Abstractions >=7.0.0,而Logging.Abstractions 8.0.0依赖DI.Abstractions >=8.0.0,进一步加剧冲突
NuGet无法自动调和这些跨版本的依赖要求,因此抛出NU1106错误。
解决方案
方案1:显式统一冲突包版本(推荐)
在Corp.App.csproj中直接添加冲突包的显式引用,强制NuGet使用指定版本:
<!-- 统一日志抽象包版本为8.0.0 --> <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="8.0.0" /> <!-- 统一DI抽象包版本为8.0.0 --> <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.0" /> <!-- 同步升级日志核心包到8.0.0,彻底消除版本绑定冲突 --> <PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.0" />
添加后执行dotnet restore,NuGet会优先使用显式指定的版本,覆盖所有间接依赖的版本要求。
方案2:降级依赖项目/包的日志抽象版本
如果不想使用8.0版本的扩展包,可以将Corp.Package和Corp.Project中的Microsoft.Extensions.Logging.Abstractions版本降级到7.0.0(与.NET7版本对齐):
<!-- 在Corp.Package和Corp.Project的csproj中修改 --> <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="7.0.0" />
这样所有依赖链的版本要求都会统一到7.x系列,避免跨版本冲突。
方案3:升级项目目标框架到.NET 8
如果项目允许升级,可以将Corp.App的目标框架改为.NET 8,此时所有8.0版本的扩展包都是原生兼容的,冲突会自动消失:
<!-- 在Corp.App.csproj中修改 --> <TargetFramework>net8.0</TargetFramework>
验证步骤
- 保存修改后的csproj文件
- 执行命令:
dotnet clean && dotnet restore - 重新构建项目,确认错误消失
内容的提问来源于stack exchange,提问作者Olmy
相关产品推荐
相关产品推荐

