NuGet Error NU1018

Escenario

El proyecto "MyProject" intenta restaurar marcos duplicados, que solo se admiten en la resolución de dependencias predeterminada cuando el SDK de .NET es la versión 10.0.300 o posterior. Actualice el SDK de .NET o quite RestoreUseLegacyDependencyResolver para usar esta característica.

Cuestión

El archivo de proyecto tiene varias TargetFrameworks entradas que se resuelven en el mismo marco de NuGet. Este escenario se conoce como alias de marco, donde diferentes propiedades TargetFramework se asignan al mismo marco subyacente.

Por ejemplo, un archivo de proyecto como el siguiente define dos marcos de destino que ambos se resuelven en el mismo net9.0 marco de NuGet:

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

El alias de marco solo se admite en la resolución de dependencias predeterminada, lo que requiere .NET SDK 10.0.300 o posterior (SdkAnalysisLevel de 10.0.300 o posterior). Cuando la resolución de dependencias heredada está activa (ya sea porque la versión del SDK es anterior o porque RestoreUseLegacyDependencyResolver está establecida), el formato de archivo de recursos no admite marcos duplicados y NuGet genera este error.

Solución

Use uno de los métodos siguientes para resolver este error:

  • Upgrade para .NET SDK 10.0.300 o posterior, que usa la resolución de dependencias predeterminada que admite el alias de marco.
  • Quite la RestoreUseLegacyDependencyResolver propiedad del archivo del proyecto o Directory.Build.props, si está establecida. Esto permite que NuGet use la resolución de dependencias predeterminada.
  • Quite las entradas duplicadas del marco de trabajo de la TargetFrameworks propiedad para que cada marco de destino se resuelva en un marco nuGet único.