Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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.
Acción recomendada
- Si crea un paquete y recibe una
NU1510advertencia, 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.