檢測到包降級: xxx 從 x.x.x 降級到 x.x.x。直接從項目引用包以選擇不同版本。


情景再現

舉個栗子: 你的類庫引用了 log4net 2.0.8log4net 依賴.NETStandard 1.3) 而你的項目使用了.NET Core 3 , 此時就有可能出現警告,或者編譯時報錯 NU1605

嚴重性	代碼	說明	項目	文件	行	禁止顯示狀態
錯誤		檢測到包降級: System.IO.FileSystem 從 4.3.0 降級到 4.0.1。直接從項目引用包以選擇不同版本。 
 XXX.YYY.API -> XXX.YYY -> log4net 2.0.8 -> System.Net.Sockets 4.1.0 -> runtime.win.System.Net.Sockets 4.3.0 -> System.IO.FileSystem (>= 4.3.0) 
 XXX.YYY.API -> XXX.YYY -> log4net 2.0.8 -> System.IO.FileSystem (>= 4.0.1)	XXX.YYY.API	E:\Sources\new\VX.XXX\XXX.YYY.API\XXX.YYY.API.csproj	0	

原因

依賴項包在包的更高版本上指定了版本約束,而不是最終解析還原。 這是由於最接近的 wins規則-解析包時,圖形中的 "即將出現的包" 的版本將覆蓋具有相同 ID 的遠處包的版本。

解決辦法

參考 微軟文檔 https://docs.microsoft.com/zh-cn/nuget/reference/errors-and-warnings/nu1605

  1. 在項目中出現還原錯誤時,將包引用添加到包的更高版本。
  2. 當在 .NET Core 3.0 或更高版本的項目中同時引用時,與 .NET Core 1.0 和1.1 隨附的某些包組合不兼容。 問題包通常以 System. 或 Microsoft. 開頭,並具有4.0.0 和4.3.1 之間的版本號。 在這種情況下,降級消息將具有從運行時開始的包。 依賴關系鏈。

若要解決此問題,請添加以下 PackageReference:

<PackageReference Include="Microsoft.NETCore.Targets" Version="3.0.0" PrivateAssets="all" />

參考

https://docs.microsoft.com/zh-cn/nuget/reference/errors-and-warnings/nu1605

https://www.nuget.org/packages/log4net/

感謝博客園問答里的園友的提示,我找不到你了~~

聲明

本文采用知識共享署名-非商業性使用-相同方式共享 2.5 中國大陸許可協議進行許可,發表在CSDN博客園,歡迎讀者轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接!請讀者/爬蟲們尊重版權


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM