NuGet Hatası NU1018

Scenario

'MyProject' projesi, yalnızca .NET SDK 10.0.300 veya daha yeni bir sürüm olduğunda varsayılan bağımlılık çözümleyicisinde desteklenen yinelenen çerçeveleri geri yüklemeye çalışır. Bu özelliği kullanmak için .NET SDK'nızı yükseltin veya RestoreUseLegacyDependencyResolver'ı kaldırın.

Sorun

Proje dosyanızda aynı NuGet çerçevesine çözümlenebilen birden çok TargetFrameworks girdi var. Bu senaryo, farklı TargetFramework özelliklerinin aynı temel çerçeveye eşlendiği çerçeve diğer adı olarak bilinir.

Örneğin, aşağıdaki gibi bir proje dosyası, her ikisinin de aynı net9.0 NuGet çerçevesine çözümlenebilen iki hedef çerçeveyi tanımlar:

<PropertyGroup>
  <TargetFrameworks>net9.0-custom1;net9.0-custom2</TargetFrameworks>
</PropertyGroup>

Çerçeve diğer adı oluşturma yalnızca .NET SDK 10.0.300 veya üzeri (SdkAnalysisLevel veya üzeri 10.0.300) gerektiren varsayılan bağımlılık çözümleyicisinde desteklenir. Eski bağımlılık çözümleyicisi etkin olduğunda (SDK sürümü eski olduğundan veya RestoreUseLegacyDependencyResolver ayarlandığından), varlık dosya biçimi yinelenen çerçeveleri desteklemez ve NuGet bu hatayı oluşturur.

Çözüm

Bu hatayı çözmek için aşağıdaki yaklaşımlardan birini kullanın:

  • Framework diğer adını destekleyen varsayılan bağımlılık çözümleyicisini kullanan SDK 10.0.300 veya sonraki .NET sürümüne yükseltin.
  • RestoreUseLegacyDependencyResolver Özelliğini proje dosyanızdan veya Directory.Build.propsayarlanmışsa kaldırın. Bu, NuGet'in varsayılan bağımlılık çözümleyicisini kullanmasına olanak tanır.
  • Her hedef çerçevenin benzersiz bir NuGet çerçevesine çözümlenmesi için özelliğinizden TargetFrameworks.