NuGet 警告 NU1605
範例 1
偵測到的套件降級: 'PackageB' 從 4.0.0 降級至 3.5.0。 直接從項目參考套件,以選取不同的版本。
'Project' -> 'PackageA' 4.0.0 -> 'PackageB' (>= 4.0.0)
'Project' -> 'PackageB' (>= 3.5.0)
問題
相依性套件在比最終解析的更高版本套件上指定版本條件約束。 這是因為 直接相依性-wins 規則 - 解析套件時,子檔中的直接套件版本將會覆寫相同標識碼的遠距套件版本。
解決方案
若要顯示還原警告的專案,請將套件參考新增至較高版本的套件。
在上述範例中,您會將套件參考變更為 PackageB
4.0.0:
'PackageA' 4.0.0 -> 'PackageB' 4.0.0
'PackageB' 4.0.0
範例 2
偵測到的套件降級: 'PackageC' 從 2.0.0 降級至 1.1.0。 直接從項目參考套件,以選取不同的版本。
'Project' -> 'PackageA' 1.0.0 -> 'PackageB' 2.0.0 ->'PackageC' (>= 2.0.0)
'Project' -> 'PackageA' 1.0.0 -> 'PackageC' (>= 1.1.0)
問題
相依性套件在比最終解析的更高版本套件上指定版本條件約束。 這是因為 直接相依性-wins 規則 - 解析套件時,NuGet 會嘗試接受套件作者的意圖。
的作者PackageA
已從 2.0.0 PackageC
明確降級為 PackageC
1.1.0。
解決方案
若要顯示還原警告的專案,請將套件參考新增至較高版本的套件。
在上述範例中,您會將套件參考變更為 PackageC
2.0.0:
'PackageA' 4.0.0 -> 'PackageB' 4.0.0
'PackageB' 4.0.0
範例 3
偵測到的套件降級:System.IO.FileSystem.Primitives 從 4.3.0 降級至 4.0.1。 直接從項目參考套件,以選取不同的版本。
Project - System.IO.FileSystem 4.0.1 - runtime.win.System.IO.FileSystem 4.3.0 - System.IO.FileSystem.Primitives (>= 4.3.0)
專案 -> System.IO.FileSystem 4.0.1 ->> System.IO.FileSystem.Primitives (>= 4.0.1)>>
問題
.NET Core 1.0 和 1.1 隨附的某些套件組合在 .NET Core 3.0 或更高版本專案中一起參考時,彼此不相容,而且指定 RuntimeIdentifier。 有問題的套件通常會以 System.
或 Microsoft.
開頭,且版本號碼介於 4.0.0 和 4.3.1 之間。 在此情況下,降級訊息的套件會從相依性鏈結中的 開始 runtime.<RID>
。
解決方案
若要解決此問題,請新增下列 PackageReference:
<PackageReference Include="Microsoft.NETCore.Targets" Version="3.0.0" PrivateAssets="all" />
您可以選擇使用 version
與 SDK 主要版本相符的 。
範例 4
偵測到的套件降級:Microsoft.NETCore.App 從 2.1.8 降級至 2.1.0。 直接從項目參考套件,以選取不同的版本。
test - mvc ->> Microsoft.NETCore.App (>= 2.1.8)
test -> Microsoft.NETCore.App (>= 2.1.0)
問題
mvc 專案在套件的較高版本上指定版本條件約束,而不是最終解析的還原。 這是因為 直接相依性-wins 規則 - 解析套件時,圖形中直接參考套件的版本會覆寫相同標識符的遠距套件版本。
解決方案
將 .NET Core SDK 移至 2.2.100 或更新版本,藉此改善此特定錯誤(Microsoft.NETCore.App 套件)。 Microsoft.NETCore.App 是 .NET Core SDK 3.0.100 版之前選擇自動引進的自動參考套件。 另請參閱 獨立式部署運行時間向前復原。
注意
雖然 NuGet 工具會將 NU1605 視為警告, 但 .NET SDK 會選擇透過 將此警告視為錯誤 WarningsAsErrors
。
您的專案可能會藉由將 設定 TreatWarningsAsErrors
為 ,將此警告升級為 true
錯誤。
雖然不建議這麼做,因為您更有可能遇到運行時間問題,但您可以選擇 隱藏 此警告。
提示
替代解決方案:NuGetSolver 是由 Microsoft DevLabs 開發的 Visual Studio 延伸模組,其設計目的是協助解決相依性衝突。 它會自動化識別和解決這些問題的程式。 如需進一步的詳細數據,請流覽 Visual Studio Marketplace上的 NuGetSolver 頁面,我們很樂意聽到您對體驗的意見反應。