Partilhar via


PrunePackageReference privatiza referências diretas

O recurso PrunePackageReference remove automaticamente os pacotes transitivos fornecidos pela plataforma de destino. Com essa alteração, o recurso também marca itens diretamente ajustáveis PackageReference com PrivateAssets=all e IncludeAssets=none atributos. Esses atributos impedem que os pacotes apareçam nas listas de dependência geradas para pacotes.

Versão introduzida

.NET 10

Comportamento anterior

Anteriormente, se a poda estava habilitada, os itens diretamente podáveis PackageReference ainda apareciam na lista de dependências geradas .nuspec, mesmo que o pacote fosse fornecido pela plataforma. (E se o seu projeto visava o .NET 10, ele pode ter gerado um NU1510 aviso.)

Por exemplo, considere um projeto de multiplataforma com a seguinte configuração:

<PropertyGroup>
  <TargetFramework>net10.0;net472</TargetFramework>
</PropertyGroup>

<ItemGroup>
  <PackageReference Include="System.Text.Json" Version="9.0.8" />
</ItemGroup>

Esse arquivo de projeto gerou um arquivo .nuspec com dependências para ambas as estruturas de destino:

<dependencies>
  <group targetFramework=".NETFramework4.7.2">
    <dependency id="System.Text.Json" version="9.0.8" />
  </group>
  <group targetFramework="net10.0">
    <dependency id="System.Text.Json" version="9.0.8" />
  </group>
</dependencies>

Novo comportamento

A partir do .NET 10, quando a poda está habilitada, os itens diretamente podáveis PackageReference são marcados automaticamente com PrivateAssets=all e IncludeAssets=none, o que os exclui das dependências geradas para frameworks de destino onde são fornecidos pela plataforma. (No entanto, se o seu projeto tiver como destino o .NET 10 ou posterior, você ainda receberá um NU1510 aviso até remover a referência do seu projeto.)

A mesma configuração de projeto agora gera um arquivo .nuspec com a dependência impossível removida da estrutura de destino que o fornece (.NET 10):

<dependencies>
  <group targetFramework=".NETFramework4.7.2">
    <dependency id="System.Text.Json" version="9.0.8" />
  </group>
  <group targetFramework="net10.0">
  </group>
</dependencies>

Tipo de mudança de rutura

Esta alteração é de natureza comportamental .

Motivo da mudança

Essa alteração garante que as dependências do pacote reflitam com precisão os requisitos reais para cada estrutura de destino. Ele evita que referências de pacotes desnecessárias apareçam em pacotes gerados quando essas APIs já são fornecidas pela estrutura de destino.

  • Se você criar um pacote e receber um NU1510 aviso, siga as instruções lá.
  • Se você criar um pacote e as dependências .nuspec geradas não contiverem um pacote referenciado para qualquer estrutura de destino, remova a referência do arquivo de projeto, pois não é necessária.
  • Se o pacote referenciado aparecer no arquivo .nuspec , nenhuma ação será necessária.

APIs afetadas

Nenhuma.

Consulte também