Compartir a través de


PrunePackageReference privaciones directas referencias que se pueden eliminar

La característica PrunePackageReference quita automáticamente los paquetes transitivos proporcionados por la plataforma de destino. Con este cambio, la característica también marca los elementos directamente eliminables con atributos y PackageReference. Estos atributos impiden que los paquetes aparezcan en listas de dependencias generadas para los paquetes.

Versión introducida

.NET 10

Comportamiento anterior

Anteriormente, si se habilitaba la eliminación, los elementos que se pueden eliminar directamente siguen apareciendo PackageReference en la lista de dependencias .nuspec generadas, incluso si la plataforma proporcionó el paquete. (Y si el proyecto tiene como destino .NET 10, es posible que hayan generado una NU1510 advertencia).

Por ejemplo, considere un proyecto de varios destinos con la siguiente configuración:

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

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

Este archivo de proyecto generó un archivo .nuspec con dependencias para ambas plataformas 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>

Nuevo comportamiento

A partir de .NET 10, cuando se habilita la depuración, los elementos que se pueden podar PackageReference directamente se marcan automáticamente con PrivateAssets=all y IncludeAssets=none, lo que los excluye de las dependencias generadas para los marcos de destino en los que éstos son proporcionados por la plataforma. (Sin embargo, si el proyecto tiene como destino .NET 10 o posterior, seguirá recibiendo una NU1510 advertencia hasta que quite la referencia del proyecto).

La misma configuración del proyecto ahora genera un archivo .nuspec con la dependencia que se puede eliminar de la plataforma de destino que la proporciona (.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 cambio disruptivo

Este es un cambio de comportamiento.

Razón del cambio

Este cambio garantiza que las dependencias del paquete reflejen con precisión los requisitos reales de cada marco de destino. Evita que las referencias de paquete innecesarias aparezcan en paquetes generados cuando la plataforma de destino ya proporciona esas API.

  • Si crea un paquete y recibe una NU1510 advertencia, siga las instrucciones que se indican allí.
  • Si crea un paquete y las dependencias .nuspec generadas no contienen un paquete al que se hace referencia para cualquier marco de destino, quite la referencia del archivo del proyecto, ya que no es necesario.
  • Si el paquete al que se hace referencia aparece en el archivo .nuspec , no se necesita ninguna acción.

API afectadas

Ninguno.

Consulte también