问题:
项目升级从.net core 3.0 升级到 .net 5后,dotnet run没有问题,dotnet publish时报 “多个类库报检测到包降级: xxx从 4.3.0 降级到 4.0.0。直接从项目引用包以选择不同版本 。”错误,无法生成打包项目。
原因:
依赖项包在包的更高版本上指定了版本约束,而不是最终解析还原。 这是由于最接近的 wins规则-解析包时,图形中的 “即将出现的包” 的版本将覆盖具有相同 ID 的远处包的版本
解决办法:
微软文档 https://docs.microsoft.com/zh-cn/nuget/reference/errors-and-warnings/nu1605
当在 .NET Core 3.0 或更高版本的项目中同时引用时,与 .NET Core 1.0 和1.1 随附的某些包组合不兼容。 问题包通常以 System. 或 Microsoft. 开头,并具有4.0.0 和4.3.1 之间的版本号。 在这种情况下,降级消息将具有从运行时开始的包依赖关系链。
若要解决此问题,在类库编辑项目文件csproj<ItemGroup>里请添加以下 PackageReference:
1 <PackageReference Include="Microsoft.NETCore.Targets" Version="3.0.0" PrivateAssets="all" />
参考: