Erreur NuGet NU1018

Scénario

Le projet « MyProject » tente de restaurer des frameworks en double, qui sont pris en charge uniquement dans le programme de résolution de dépendance par défaut lorsque le sdk .NET est version 10.0.300 ou ultérieure. Mettez à niveau votre sdk .NET ou supprimez RestoreUseLegacyDependencyResolver pour utiliser cette fonctionnalité.

Problème

Votre fichier projet comporte plusieurs TargetFrameworks entrées qui se résolvent dans le même framework NuGet. Ce scénario est appelé alias d’infrastructure, où différentes propriétés TargetFramework sont mappées au même framework sous-jacent.

Par exemple, un fichier projet comme celui-ci définit deux frameworks cibles qui se résolvent tous deux vers le même net9.0 framework NuGet :

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

L’alias d’infrastructure est pris en charge uniquement dans le programme de résolution de dépendance par défaut, ce qui nécessite .NET SDK 10.0.300 ou version ultérieure (SdkAnalysisLevel de 10.0.300 ou version ultérieure). Lorsque le programme de résolution de dépendance hérité est actif (soit parce que la version du KIT de développement logiciel (SDK) soit antérieure, soit parce qu’elle RestoreUseLegacyDependencyResolver est définie), le format de fichier de ressources ne prend pas en charge les frameworks en double et NuGet génère cette erreur.

Solution

Utilisez l’une des approches suivantes pour résoudre cette erreur :

  • Upgrade vers .NET SDK 10.0.300 ou version ultérieure, qui utilise le programme de résolution de dépendances par défaut qui prend en charge l’alias d’infrastructure.
  • Supprimez la RestoreUseLegacyDependencyResolver propriété de votre fichier projet ou Directory.Build.props, si elle est définie. Cela permet à NuGet d’utiliser le programme de résolution de dépendance par défaut.
  • Supprimez les entrées d’infrastructure en double de votre TargetFrameworks propriété afin que chaque framework cible soit résolu en framework NuGet unique.