Partager via


NU1510 est levé pour les références directes élaguées par NuGet

À compter du Kit de développement logiciel (SDK) .NET 10, lorsque la taille est activée, NuGet déclenche un NU1510 avertissement pour les projets qui :

  • Cible ou multi-cible .NET 10 ou version ultérieure.
  • Incluez une référence de package directe qui chevauche une bibliothèque fournie par l’infrastructure (autrement dit, la référence n’est pas nécessaire).

Version introduite

.NET 10

Comportement précédent

Auparavant, le Kit de développement logiciel (SDK) .NET ignorait le contenu d’un package s’il se chevauche avec une bibliothèque fournie par le framework. La référence du package a été autorisée, mais n’a aucun effet sur la sortie de build.

Nouveau comportement

À compter du Kit de développement logiciel (SDK) .NET 10, si la taille est activée et que le projet cible .NET 10 ou une version ultérieure, NuGet vous avertit des références de package inutiles en activant un NU1510 avertissement.

Note

Plus loin dans .NET 10, une modification associée a été apportée de telle sorte que les références de package élagables directes soient automatiquement exclues du .nuspec fichier. Toutefois, vous recevez toujours l’avertissement NU1510 pour nettoyer votre projet.

Type de changement cassant

Cette modification peut affecter la compatibilité de la source.

Raison de la modification

Cette modification réduit la charge de maintenance des développeurs en éliminant les références de package inutilisées. Il empêche les mises à jour inutiles, réduit les temps de téléchargement et de restauration, et garantit des artefacts de build plus propres. L’avertissementNU1510 vous permet d’identifier et de nettoyer ces références de manière proactive.

Si votre projet cible uniquement les frameworks où le package est nettoyé, supprimez entièrement la référence du package. Pour les projets multi-ciblage, incluez de manière conditionnelle la référence du package uniquement pour les frameworks qui en ont besoin. Utilisez l’exemple suivant comme guide :

<ItemGroup>
    <!-- reference 8.0 System.Text.Json when targeting things older than .NET 8 -->
    <PackageReference Include="System.Text.Json"  Version="8.0.5" Condition="!$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net8.0'))" />

    <!-- reference 10.0 System.Linq.AsyncEnumerable when targeting things older than .NET 10 -->
    <PackageReference Include="System.Linq.AsyncEnumerable"  Version="10.0.0-preview.2.25163.2" Condition="!$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))" />

    <!-- Reference System.Memory on frameworks not compatible with .NET Core 2.1 nor .NETStandard 2.1 -->
    <PackageReference Include="System.Memory" Condition="!$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'netcoreapp2.1')) and !$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'netstandard2.1'))" />
</ItemGroup>

API affectées

Aucun.

Voir aussi