Partilhar via


Aviso NuGet NU1510

Scenario

PackageReference System.Text.Json não será podado. Considere remover este pacote de suas dependências, pois provavelmente é desnecessário.

Issue

Este aviso é apresentado como resultado da poda de grafos de dependência do NuGet, e indica que um pacote de outra forma podável foi restaurado devido a um direto PackageReference. O pacote nomeado pode ser podado se o direto PackageReference for removido, uma vez que o .NET SDK direcionado fornece a mesma versão ou superior deste assembly.

Este aviso afeta apenas pacotes registados para poda através da funcionalidade PrunePackageReference . é levantado quando a PackageReference pessoa em questão pode ser completamente removida do projeto.

Exemplo 1

Quando o SDK .NET alvo inclui uma versão equivalente, a resolução de conflitos de dependência seleciona a assembly incluída no SDK:

  <PropertyGroup>
    <!-- 'System.Text.Json' is SDK-bundled in 'net10.0' -->
    <TargetFramework>net10.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <!-- The assembly provided by this reference will not be used -->
    <PackageReference Include="System.Text.Json" Version="10.0.0" />
  </ItemGroup>

Exemplo 2

Quando o SDK .NET direcionado inclui uma versão equivalente para múltiplos alvos de framework, a resolução de conflitos de dependências seleciona a assembly SDK apropriada para cada alvo:

  <PropertyGroup>
    <!-- 'System.Text.Json' is SDK-bundled in both TFMs -->
    <TargetFrameworks>net9.0;net10.0</TargetFrameworks>
  </PropertyGroup>

  <ItemGroup>
    <!-- Neither of the assemblies provided by these references will be used -->
    <PackageReference Include="System.Text.Json" Version="10.0.0" Condition="'$(TargetFramework)' == 'net10.0'"/>
    <PackageReference Include="System.Text.Json" Version="9.0.4" Condition="'$(TargetFramework)' == 'net9.0'"/>
  </ItemGroup>

Solution

Remove o desnecessário PackageReference.

Note

A partir do .NET 10, a PrunePackageReference funcionalidade é ativada por defeito para todos os projetos que têm como objetivo .NET 10 ou superior. O aviso só é ativado quando a poda se aplica a todos os alvos de execução:

  <PropertyGroup>
    <!-- 'System.Text.Json' is not SDK-bundled in 'net48' -->
    <TargetFrameworks>net10.0;net48</TargetFrameworks>
  </PropertyGroup>

  <ItemGroup>
    <!-- This reference is needed in 'net48' - NU1510 is not raised -->
    <PackageReference Include="System.Text.Json" Version="9.0.7" />
  </ItemGroup>