Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
À compter de .NET 10, NuGet déclenche un NU1510
avertissement lorsqu’un projet inclut une référence de package directe qui chevauche une bibliothèque fournie par le framework et n’est pas nécessaire.
Version introduite
.NET 10 Preview 1
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
NuGet supprime désormais entièrement les références de package inutiles et déclenche un NU1510
avertissement pour vous avertir du problème.
Type de changement cassant
Il s’agit d’une modification incompatible avec 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)', 'net.10'))" />
<!-- 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.