NuGet-Fehler NU1018

Szenario

Das Projekt "MyProject" versucht, doppelte Frameworks wiederherzustellen, die nur im Standardabhängigkeitslöser unterstützt werden, wenn das .NET SDK Version 10.0.300 oder höher ist. Aktualisieren Sie Ihr .NET SDK, oder entfernen Sie RestoreUseLegacyDependencyResolver, um dieses Feature zu verwenden.

Thema

Ihre Projektdatei enthält mehrere TargetFrameworks Einträge, die in das gleiche NuGet-Framework aufgelöst werden. Dieses Szenario wird als Frameworkaliasing bezeichnet, wobei verschiedene TargetFramework-Eigenschaften dem gleichen zugrunde liegenden Framework zugeordnet sind.

Beispielsweise definiert eine Projektdatei wie die folgende zwei Zielframeworks, die beide in das gleiche net9.0 NuGet-Framework aufgelöst werden:

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

Frameworkaliasing wird nur im Standardmäßigen Abhängigkeitslöser unterstützt, der .NET SDK 10.0.300 oder höher erfordert (SdkAnalysisLevel von 10.0.300 oder höher). Wenn der Legacy-Abhängigkeitslöser aktiv ist (entweder weil die SDK-Version älter RestoreUseLegacyDependencyResolver oder festgelegt ist), unterstützt das Ressourcendateiformat keine doppelten Frameworks, und NuGet löst diesen Fehler aus.

Lösung

Verwenden Sie einen der folgenden Ansätze, um diesen Fehler zu beheben:

  • Upgrade auf .NET SDK 10.0.300 oder höher, das den Standardmäßigen Abhängigkeitslöser verwendet, der frameworkbasierte Aliase unterstützt.
  • Entfernen Sie die RestoreUseLegacyDependencyResolver Eigenschaft aus der Projektdatei oder Directory.Build.props, wenn sie festgelegt ist. Dadurch kann NuGet den Standardmäßigen Abhängigkeitslöser verwenden.
  • Entfernen Sie doppelte Frameworkeinträge aus Ihrer TargetFrameworks Eigenschaft, sodass jedes Zielframework in ein eindeutiges NuGet-Framework aufgelöst wird.