問題:
項目升級從.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" />
參考: