Partilhar via


Erro NuGet NU1018

Scenario

O projeto 'MyProject' está a tentar restaurar frameworks duplicados, que são suportados apenas no resolvedor de dependências por defeito quando o SDK .NET é a versão 10.0.300 ou posterior. Atualize o seu SDK .NET ou remova o RestoreUseLegacyDependencyResolver para usar esta funcionalidade.

Issue

O teu ficheiro de projeto tem várias TargetFrameworks entradas que resolvem para o mesmo framework NuGet. Este cenário é conhecido como aliasing de framework, onde diferentes propriedades do TargetFramework correspondem ao mesmo framework subjacente.

Por exemplo, um ficheiro de projeto como o seguinte define dois frameworks-alvo que resolvem ambos para o mesmo net9.0 framework NuGet:

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

O aliasing de framework é suportado apenas no resolvedor de dependências padrão, que requer .NET SDK 10.0.300 ou posterior (SdkAnalysisLevel de 10.0.300 ou posterior). Quando o resolvedor de dependências legado está ativo (seja porque a versão do SDK é mais antiga ou porque RestoreUseLegacyDependencyResolver está definido), o formato de ficheiro dos assets não suporta frameworks duplicados, e o NuGet gera este erro.

Solução

Use uma das seguintes abordagens para resolver este erro:

  • Upgrade para .NET SDK 10.0.300 ou posterior, que utiliza o resolvedor de dependências padrão que suporta aliasing de framework.
  • Remove a RestoreUseLegacyDependencyResolver propriedade do ficheiro do teu projeto ou Directory.Build.props, se estiver definida. Isto permite que o NuGet use o resolvedor de dependências por defeito.
  • Remova entradas duplicadas do framework da sua TargetFrameworks propriedade para que cada framework alvo se resolva para um framework NuGet único.