NuGet Peringatan NU1605
Contoh 1
Penurunan paket yang terdeteksi: 'PackageB' dari 4.0.0 ke 3.5.0. Referensikan paket langsung dari proyek untuk memilih versi yang berbeda.
'Project' -> 'PackageA' 4.0.0 -> 'PackageB' (>= 4.0.0)
'Project' -> 'PackageB' (>= 3.5.0)
Masalah
Paket dependensi menentukan batasan versi pada versi paket yang lebih tinggi daripada pemulihan yang pada akhirnya diselesaikan. Itu karena aturan direct-dependency-wins - ketika menyelesaikan paket, versi paket langsung dalam subgraf akan mengambil alih paket jauh dengan ID yang sama.
Solusi
Untuk proyek yang menunjukkan peringatan pemulihan, tambahkan referensi paket ke versi paket yang lebih tinggi.
Dalam contoh di atas, Anda akan mengubah referensi paket menjadi PackageB
4.0.0:
'PackageA' 4.0.0 -> 'PackageB' 4.0.0
'PackageB' 4.0.0
Contoh 2
Penurunan paket yang terdeteksi: 'PackageC' dari 2.0.0 ke 1.1.0. Referensikan paket langsung dari proyek untuk memilih versi yang berbeda.
'Project' -> 'PackageA' 1.0.0 -> 'PackageB' 2.0.0 ->'PackageC' (>= 2.0.0)
'Project' -> 'PackageA' 1.0.0 -> 'PackageC' (>= 1.1.0)
Masalah
Paket dependensi menentukan batasan versi pada versi paket yang lebih tinggi daripada pemulihan yang pada akhirnya diselesaikan. Itu karena aturan direct-dependency-wins - ketika menyelesaikan paket, NuGet mencoba menghormati niat penulis paket.
Penulis PackageA
telah secara eksplisit menurunkan ke PackageC
1.1.0 dari PackageC
2.0.0.
Solusi
Untuk proyek yang menunjukkan peringatan pemulihan, tambahkan referensi paket ke versi paket yang lebih tinggi.
Dalam contoh di atas, Anda akan mengubah referensi paket menjadi PackageC
2.0.0:
'PackageA' 4.0.0 -> 'PackageB' 4.0.0
'PackageB' 4.0.0
Contoh 3
Penurunan paket yang terdeteksi: System.IO.FileSystem.Primitives dari 4.3.0 ke 4.0.1. Referensikan paket langsung dari proyek untuk memilih versi yang berbeda.
Project - System.IO.FileSystem 4.0.1 - runtime.win.System.IO.FileSystem 4.3.0 - System.IO.FileSystem.Primitives (>= 4.3.0)
Proyek -> System.IO.FileSystem 4.0.1 -> System.IO.FileSystem.Primitives (>= 4.0.1>)>>
Masalah
Kombinasi paket tertentu yang dikirim dengan .NET Core 1.0 dan 1.1 tidak kompatibel satu sama lain ketika dirujuk bersama dalam proyek .NET Core 3.0 atau yang lebih tinggi, dan RuntimeIdentifier ditentukan. Paket bermasalah umumnya dimulai dengan System.
atau Microsoft.
, dan memiliki nomor versi antara 4.0.0 dan 4.3.1. Dalam hal ini, pesan downgrade akan memiliki paket yang dimulai dengan runtime.<RID>
dalam rantai dependensi.
Solusi
Untuk mengatasi masalah ini, tambahkan PackageReference berikut:
<PackageReference Include="Microsoft.NETCore.Targets" Version="3.0.0" PrivateAssets="all" />
Anda dapat memilih untuk menggunakan version
pencocokan versi utama SDK Anda.
Contoh 4
Penurunan paket yang terdeteksi: Microsoft.NETCore.App dari 2.1.8 ke 2.1.0. Referensikan paket langsung dari proyek untuk memilih versi yang berbeda.
test -> mvc -> Microsoft.NETCore.App (>= 2.1.8)
test -> Microsoft.NETCore.App (>= 2.1.0)
Masalah
Proyek mvc menentukan batasan versi pada versi paket yang lebih tinggi daripada pemulihan yang pada akhirnya diselesaikan. Itu karena aturan direct-dependency-wins - ketika menyelesaikan paket, versi paket yang direferensikan langsung dalam grafik akan mengambil alih paket jauh dengan ID yang sama.
Solusi
Kesalahan spesifik ini (dengan paket Microsoft.NETCore.App) ditingkatkan dengan memindahkan .NET Core SDK Anda ke 2.2.100 atau yang lebih baru. Microsoft.NETCore.App adalah paket yang dirujuk otomatis yang dipilih oleh .NET Core SDK sebelum versi 3.0.100 untuk dibawa secara otomatis. Lihat juga Roll roll runtime penyebaran mandiri ke depan.
Catatan
Meskipun NU1605 dianggap sebagai peringatan oleh alat NuGet, .NET SDK memilih untuk memperlakukan peringatan ini sebagai kesalahan melalui WarningsAsErrors
.
Proyek Anda mungkin meningkatkan peringatan ini ke kesalahan dengan mengatur TreatWarningsAsErrors
ke true
.
Meskipun tidak disarankan, karena Anda lebih cenderung mengalami masalah runtime, Anda dapat memilih untuk menekan peringatan ini.
Tip
Solusi alternatif: NuGetSolver adalah Ekstensi Visual Studio yang dikembangkan oleh Microsoft DevLabs, yang dirancang untuk membantu menyelesaikan konflik dependensi. Ini mengotomatiskan proses mengidentifikasi dan mengatasi masalah ini. Untuk detail lebih lanjut, kunjungi halaman NuGetSolver di Visual Studio Marketplace dan kami ingin mendengar umpan balik Anda tentang pengalaman Anda.