ASP.NET Core 8.0 Docker构建遇NU1202错误:Common.Logging兼容性问题
解决Docker中.NET 8项目Quartz依赖Common.Logging版本不兼容的NU1202错误
核心问题
你遇到的NU1202错误是因为Quartz 3.13.1的传递依赖被强制拉取了不兼容.NET 8的Common.Logging 1.2.0版本,本地环境因缓存或构建工具的自动冲突处理掩盖了问题,而Docker的干净构建环境直接暴露了依赖冲突。
解决方案
1. 显式指定兼容的Common.Logging版本
在出错的waternav.backend.api.csproj项目中添加对高版本Common.Logging的引用,覆盖传递依赖的旧版本:
<ItemGroup> <!-- 使用兼容.NET 8的版本,例如3.4.1 --> <PackageReference Include="Common.Logging" Version="3.4.1" /> </ItemGroup>
2. 检查Directory.Packages.props的版本锁定
如果你的解决方案用Directory.Packages.props统一管理包版本,确认其中是否强制指定了Common.Logging的旧版本:
- 打开
Directory.Packages.props,查找<PackageVersion Include="Common.Logging" />条目 - 将版本修改为兼容.NET 8的版本:
<PackageVersion Include="Common.Logging" Version="3.4.1" />
3. 确保Docker使用正确的.NET 8 SDK镜像
检查Dockerfile中使用的SDK镜像是否为官方.NET 8版本,避免因镜像版本过低导致依赖解析异常:
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
4. 清理Docker构建缓存
旧的构建缓存可能残留错误的依赖包,构建时添加--no-cache参数强制重新拉取所有依赖:
docker build --no-cache -t your-api-image .
验证步骤
- 保存修改后的csproj或Directory.Packages.props文件
- 重新执行Docker构建中的
dotnet restore步骤 - 确认NU1202错误消失,依赖恢复完成
内容的提问来源于stack exchange,提问作者Luis Boyd
相关产品推荐
相关产品推荐

