Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
À 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.
Action recommandée
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.