Partager via


PrunePackageReference privatise les références directes pouvant être nettoyées

La fonctionnalité PrunePackageReference supprime automatiquement les packages transitifs fournis par la plateforme cible. Avec cette modification, la fonctionnalité marque également directement les éléments runables PackageReference avec PrivateAssets=all et IncludeAssets=none les attributs. Ces attributs empêchent les packages d’apparaître dans les listes de dépendances générées pour les packages.

Version introduite

.NET 10

Comportement précédent

Auparavant, si l'élagage était activé, les éléments directement élagables PackageReference apparaissaient toujours dans la liste des dépendances générée .nuspec, même si le package était fourni par la plateforme. (Et si votre projet ciblait .NET 10, ils ont peut-être généré un NU1510 avertissement.)

Par exemple, considérez un projet multi-ciblage avec la configuration suivante :

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

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

Un tel fichier projet a généré un fichier .nuspec avec des dépendances pour les deux frameworks cibles :

<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>

Nouveau comportement

À compter de .NET 10, lorsque la réduction est activée, les éléments pouvant être réduits directement PackageReference sont automatiquement marqués avec PrivateAssets=all et IncludeAssets=none, ce qui les exclut des dépendances générées pour les frameworks cibles où ils sont fournis par la plateforme. (Toutefois, si votre projet cible .NET 10 ou version ultérieure, vous recevez toujours un NU1510 avertissement jusqu’à ce que vous supprimiez la référence de votre projet.)

La même configuration de projet génère désormais un fichier .nuspec avec la dépendance pouvant être supprimée du framework cible qui le fournit (.NET 10) :

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

Type de changement cassant

Ce changement est un changement de comportement.

Motif de la modification

Cette modification garantit que les dépendances de package reflètent précisément les exigences réelles pour chaque framework cible. Il empêche les références de package inutiles d’apparaître dans des packages générés lorsque ces API sont déjà fournies par l’infrastructure cible.

  • Si vous créez un package et recevez un NU1510 avertissement, suivez les instructions ci-dessous.
  • Si vous créez un package et que les dépendances .nuspec générées ne contiennent pas de package référencé pour une infrastructure cible, supprimez la référence du fichier projet, car elle n’est pas nécessaire.
  • Si le package référencé apparaît dans le fichier .nuspec , aucune action n’est nécessaire.

API affectées

Aucun.

Voir aussi