NuGet Uyarısı NU1605

Örnek 1

Paket düşürme algılandı: 'PackageB' 4.0.0'dan 3.5.0'a. Farklı bir sürüm seçmek için doğrudan projeden pakete başvurun.
    'Project' -> 'PackageA' 4.0.0 -> 'PackageB' (>= 4.0.0)
    'Project' -> 'PackageB' (>= 3.5.0)

Sorun

Bağımlılık paketi, bir paketin daha yüksek bir sürümünde geri yüklemenin çözümlenmesinden daha yüksek bir sürüm kısıtlaması belirtti. Bunun nedeni direct-dependency-wins kuralıdır. Paketleri çözümlerken, alt imzadaki doğrudan paket sürümü, uzak paketlerin aynı kimliğe sahip olan sürümünü geçersiz kılar.

Çözüm

Geri yükleme uyarısını gösteren projeye, paketin daha yüksek sürümüne bir paket başvurusu ekleyin.

Yukarıdaki örnekte, paket başvuruyu 4.0.0 olarak PackageB değiştirirsiniz:

'PackageA' 4.0.0 -> 'PackageB' 4.0.0
'PackageB' 4.0.0

Örnek 2

Paket düşürme algılandı: 'PackageC' 2.0.0'dan 1.1.0'a. Farklı bir sürüm seçmek için doğrudan projeden pakete başvurun.
    'Project' -> 'PackageA' 1.0.0 -> 'PackageB' 2.0.0 ->'PackageC' (>= 2.0.0)
    'Project' -> 'PackageA' 1.0.0 -> 'PackageC' (>= 1.1.0)

Sorun

Bağımlılık paketi, bir paketin daha yüksek bir sürümünde geri yüklemenin çözümlenmesinden daha yüksek bir sürüm kısıtlaması belirtti. Bunun nedeni , doğrudan bağımlılık-wins kuralıdır- Paketleri çözümlerken NuGet, paket yazarının amacını yerine getirmeye çalışır. yazarı PackageA açıkça 2.0.0'dan PackageC 1.1.0'a PackageC düşürmüştür.

Çözüm

Geri yükleme uyarısını gösteren projeye, paketin daha yüksek sürümüne bir paket başvurusu ekleyin.

Yukarıdaki örnekte, paket başvuruyu 2.0.0 olarak PackageC değiştirebilirsiniz:

'PackageA' 4.0.0 -> 'PackageB' 4.0.0
'PackageB' 4.0.0

Örnek 3

Paket düşürme algılandı: System.IO.FileSystem.Primitives 4.3.0'dan 4.0.1'e. Farklı bir sürüm seçmek için doğrudan projeden pakete başvurun.
Project -> System.IO.FileSystem 4.0.1 -> runtime.win.System.IO.FileSystem 4.3.0 -> System.IO.FileSystem.Primitives (>= 4.3.0)
Project -> System.IO.FileSystem 4.0.1 -> System.IO.FileSystem.Primitives (>= 4.0.1)

Sorun

.NET Core 1.0 ve 1.1 ile birlikte gönderilen paketlerin belirli birleşimleri, .NET Core 3.0 veya üzeri bir projede birlikte başvurulduğunda ve RuntimeIdentifier belirtildiğinde birbiriyle uyumlu değildir. Sorunlu paketler genellikle veya Microsoft.ile System. başlar ve 4.0.0 ile 4.3.1 arasında sürüm numaralarına sahiptir. Bu durumda, eski sürüme düşürme iletisi bağımlılık zincirinde ile runtime.<RID> başlayan bir pakete sahip olur.

Çözüm

Bu sorunu geçici olarak çözmek için aşağıdaki PackageReference öğesini ekleyin:

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

SDK'nızın ana sürümüyle eşleşen sürümünü kullanmayı version seçebilirsiniz.

Örnek 4

Paket düşürme algılandı: 2.1.8'den 2.1.0'a Microsoft.NETCore.App. Farklı bir sürüm seçmek için doğrudan projeden pakete başvurun.
    test -> mvc -> Microsoft.NETCore.App (>= 2.1.8)
    test -> Microsoft.NETCore.App (>= 2.1.0)

Sorun

mvc projesi, bir paketin daha yüksek bir sürümünde geri yüklemenin çözümlenmesinden daha yüksek bir sürüm kısıtlaması belirtti. Bunun nedeni doğrudan bağımlılık-wins kuralıdır. Paketleri çözümlerken, grafikteki doğrudan başvuruda bulunulmuş paketin sürümü uzak paketin aynı kimliğe sahip olan sürümünü geçersiz kılar.

Çözüm

Bu özel hata (Microsoft.NETCore.App paketiyle) .NET Core SDK'nızı 2.2.100 veya sonraki bir sürüme taşıyarak geliştirilmiştir. Microsoft.NETCore.App, 3.0.100 sürümünden önceki .NET Core SDK'sının otomatik olarak getirmeyi seçtiği otomatik başvurulu bir pakettir. Ayrıca bkz . Bağımsız dağıtım çalışma zamanı ileri sarma.

Not

NU1605, NuGet araçları tarafından bir uyarı olarak kabul edilir, ancak .NET SDK'sı bu uyarıyı aracılığıyla WarningsAsErrorsbir hata olarak kabul eder. Projeniz olarak ayarlayarak TreatWarningsAsErrors bu uyarıyı bir hataya trueyükseltiyor olabilir. Önerilmiyor olsa da, çalışma zamanı sorunlarıyla karşılaşma olasılığınız daha yüksek olduğundan, bu uyarıyı gizlemeyi seçebilirsiniz.

İpucu

Alternatif çözüm: NuGetSolver, Microsoft DevLabs tarafından geliştirilen ve bağımlılık çakışmalarını çözmeye yardımcı olmak için tasarlanmış bir Visual Studio Uzantısıdır. Bu sorunları tanımlama ve çözme sürecini otomatikleştirir. Diğer ayrıntılar için Visual Studio Market'te NuGetSolver sayfasını ziyaret edin. Deneyiminiz hakkındaki geri bildirimlerinizi duymak isteriz.