Compartilhar via


PrunePackageReference privatiza referências prunáveis diretas

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

Versão introduzida

.NET 10

Comportamento anterior

Anteriormente, se a poda estava habilitada, itens diretamente podáveis PackageReference ainda apareciam na lista de dependências .nuspec geradas, mesmo que o pacote tenha sido fornecido pela plataforma. (E se o projeto tiver como destino o .NET 10, ele poderá ter gerado um NU1510 aviso.)

Por exemplo, considere um projeto de vários destinos 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 aptos para poda PackageReference são automaticamente marcados 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 projeto for direcionado ao .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 podá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 alteração interruptiva

Essa alteração é uma mudança comportamental.

Motivo da alteração

Essa alteração garante que as dependências do pacote reflitam com precisão os requisitos reais para cada estrutura de destino. Ele impede que referências desnecessárias de pacote 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.
  • 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 ela não é necessária.
  • Se o pacote referenciado aparecer no arquivo .nuspec , nenhuma ação será necessária.

APIs afetadas

Nenhum.

Confira também