Notes de publication de NuGet 6.0

Véhicules de distribution NuGet :

Version de NuGet Disponible dans la version Visual Studio Disponible dans les Kit de développement logiciel (SDK) .NET
6.0.0 Visual Studio 2022 version 17.0.0 6.0.01
6.0.1 Visual Studio 2022 version 17.0.2 S/O
6.0.2 Visual Studio 2022 version 17.0.11 6.0.3011
6.0.3 Visual Studio 2022 version 17.0 6.0.1101
6.0.5 S/O 6.0.1181
6.0.6 S/O 6.0.1271

1 Installé avec Visual Studio 2022 avec la charge de travail .NET Core

Résumé : nouveautés de la version 6.0.6

  • [Sécurité] : Microsoft Security Advisory CVE-2024-0057 | Vulnérabilité de contournement de la fonctionnalité de sécurité du client NuGet – #12653

Récapitulatif : Nouveautés de la version 6.0.5

  • [Sécurité] : Microsoft Security Advisory CVE-2023-29337 | Vulnérabilité d’exécution de code à distance du client NuGet - #12653

Remarque

Il y a un changement de comportement critique sous Linux. L’emplacement du dossier temporaire, où NuGet stocke les fichiers temporaires pendant ses différentes opérations, a changé de /tmp/NuGetScratch à /tmp/NuGetScratch<username>. Par exemple, pour l’utilisateur User1, le dossier temporaire sera /tmp/NuGetScratchUser1.

Récapitulatif : Nouveautés de la version 6.0.3

  • [Securité] : Microsoft Security Advisory CVE-2022-41032 | Vulnérabilité d’élévation de privilèges dans .NET- #12149

Remarque

Visual Studio 17.0, MSBuild 17.0 et .NET 6.0 nécessite NuGet.exe 6.0 ou version supérieure.

Récapitulatif : Nouveautés de la version 6.0.2

  • [Sécurité] : Microsoft Security Advisory CVE 2022-30184 | Vulnérabilité de divulgation d’informations dans .NET - #11883

Récapitulatif : Nouveautés de la version 6.0.0

🎉 Il s’agit de la première version permettant d’offrir une prise en charge complète de la création et de la restauration des packages NuGet ciblant .NET 6.0 🎉

Prise en charge de .NET 6

NuGet 6.0 est la première version à offrir une prise en charge complète de la création et de la restauration des packages NuGet pour .NET 6.0. Vous pouvez désormais cibler les version cible de .Net Framework suivants :

  • net6.0
  • net6.0-windows
  • net6.0-android
  • net6.0-ios
  • net6.0-macos
  • net6.0-maccatalyst
  • net6.0-tvos
  • net6.0-tizen

.NET 6

Si vous n'êtes pas familier avec les cibles .NET 6.0 aujourd'hui ou ce à quoi elles ressembleront à l'avenir, n'oubliez pas de jeter un coup d'œil à la section spécification TFM .NET 6.0.

Mappage de source

Au début de l'année, de nombreux gestionnaires de paquets ont été informés d'attaques par confusion de dépendances dans lesquelles un utilisateur peut être amené à installer une dépendance malveillante au lieu de celle qu'il avait l'intention d'installer. Pour renforcer votre chaîne d’approvisionnement logicielle contre ces attaques, l’équipe NuGet a développé une nouvelle fonctionnalité qui vous permet de mapper vos dépendances à des sources spécifiques. Vous trouverez ci-dessous un exemple de la façon dont vous pouvez utiliser le mappage source pour protéger vos projets.

<!-- Define a global packages folder for your repository. -->
<!-- This is where installed packages will be stored locally. -->
<config>
  <add key="globalPackagesFolder" value="globalPackagesFolder" />
</config>

<!-- Define my package sources, nuget.org and contoso.com. -->
<!-- `clear` ensures no additional sources are inherited from another config file. -->
<packageSources>
  <clear />
  <!-- `key` can be any identifier for your source. -->
  <add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
  <add key="contoso.com" value="https://contoso.com/packages/" />
</packageSources>

<!-- Define mappings by adding package ID patterns beneath the target source. -->
<!-- Contoso.* packages will be restored from contoso.com, everything else from nuget.org. -->
<packageSourceMapping>
  <!-- key value for <packageSource> should match key values from <packageSources> element -->
  <packageSource key="nuget.org">
    <package pattern="*" />
  </packageSource>
  <packageSource key="contoso.com">
    <package pattern="Contoso.*" />
  </packageSource>
</packageSourceMapping>

Vous pouvez en savoir plus sur le mappage de source dans notre blog publié plus tôt cette année.

Vulnérabilités de package dans Visual Studio

Lorsque vous utilisez le Gestionnaire de package NuGet dans Visual Studio, vous verrez maintenant des vulnérabilités de package pour vos packages, notamment le nombre et la gravité des vulnérabilités, ainsi que des liens directs pour en savoir plus sur les avis.

Visual Studio Package Vulnerabilities

Comportement de réessai et d’interruption

Il existe désormais un indicateur NUGET_ENABLE_EXPERIMENTAL_HTTP_RETRY permettant d’améliorer le comportement de réessai et d’interruption des clients NuGet en ce qui concerne l’augmentation du nombre maximum de tentatives et de retard pour une expérience plus résiliente en cas de connexion Internet plus faible.

Exclure les extensions de fichier par défaut

Vous pouvez maintenant utiliser l’indicateur <AllowedOutputExtensionsInPackageBuildOutputFolder> MSBuild pour modifier les extensions de fichier incluses dans la sortie de version de votre package. Cela vous donne plus de contrôle sur les extensions incluses dans votre dossier de sortie de version.

Amélioration des informations de dépréciation dans Visual Studio

Les packages déconseillés dans Visual Studio incluent désormais un lien vers le package alternatif suggéré à utiliser. Vous pouvez utiliser cette fonctionnalité pour parcourir et installer rapidement des packages qui sont gérés activement.

Visual Studio Package Deprecations

Ajoute d’un fichier README de package dans Visual Studio

Vous pouvez maintenant ajouter un package README.md fichier directement dans Visual Studio. Un fichier README permet de communiquer des informations importantes sur votre package. Il est souvent le premier élément qu’un visiteur verra lors de la visite de votre package sur NuGet.org. Les fichiers README incluent généralement des informations sur :

  • Ce que fait le package
  • Pourquoi le package est utile
  • Comment les utilisateurs peuvent commencer à utiliser le package
  • Où les utilisateurs peuvent obtenir de l’aide ou contribuer à votre package

Vous pouvez en savoir plus sur l’ajout d’un fichier README à votre package NuGet sur notre blog.

Chargement de solution et changement de branche plus rapides dans Visual Studio

Dans Visual Studio 2022, NuGet a redéfini le contrat entre la restauration de package NuGet et les composants Visual Studio courants afin d’améliorer les performances des solutions volumineuses en appelant la restauration une seule fois au lieu de plusieurs fois. Cela améliore le temps nécessaire pour que les processus en arrière-plan se terminent de manière significative.

Installez Visual Studio 2022 Preview et faites-nous savoir si vous constatez une expérience plus rapide lors du chargement de vos solutions volumineuses ou du basculement entre les branches !

API SolutionRestoreManager Visual Studio de NuGet déplacées dans le package NuGet.VisualStudio

NuGet.SolutionRestoreManager.Interop n’est plus mis à jour et ses API ont été fusionnées dans le package NuGet.VisualStudio. Si vous mettez à jour une extension Visual Studio existante pour fonctionner avec Visual Studio 2022 (17.0) et que vous utilisiez précédemment NuGet.SolutionRestoreManager.Interop, vous devez désinstaller ce package et installer NuGet.VisualStudio vers la version 6.0.0. Les espaces de noms et les classes restent identiques, de sorte qu’ils sont compatibles du point de vue de l’API.

En outre, après la modification de la politique de Visual Studio, NuGet.VisualStudio n’utilise plus EmbedInteropTypes. Par conséquent, votre extension aura une référence de temps de compilation à NuGet.VisualStudio.dll. Nuget indique à Visual Studio d’utiliser des redirections de liaison. Votre extension n’est donc pas affectée lorsque NuGet met à jour les versions plus récentes et que votre extension est compilée sur une version antérieure de notre assembly. Pour cette raison, vous pouvez supprimer les assemblys de NuGet de votre vsix pour réduire la taille de téléchargement. Les packages nuGet seront mis à jour pour effectuer cette opération automatiquement dans NuGet 6.2 (pour Visual Studio 17.2).

Pour supprimer les assemblys de NuGet de votre vsix, ajoutez les éléments suivants à votre fichier projet :

<ItemGroup>
  <SuppressFromVsix Include="NuGet.VisualStudio.dll" Visible="false" />
  <SuppressFromVsix Include="NuGet.VisualStudio.Contracts.dll" Visible="false" />
</ItemGroup>

Fonctionnalités :

  • Ajout d’un hook pour exclure certaines extensions de sortie de build à partir du package nuget - #10690

  • Implémentation d’une nouvelle priorité pour les tfms xamarin lors de l’utilisation de net6.0+ - #10717

  • Implémentation d’un avertissement maccatalyst lors de la « restauration » vers xamarin.ios pour les projets net6.0+ - #10718

  • Ajout de la prise en charge des espaces de noms de package dans le cadre de la configuration - ajoute d’une fonctionnalité de lecture uniquement - #10725

  • Espaces de noms de package : compte du filtrage des espaces de noms de package dans le téléchargement du package dans la restauration PackageReference - #10732

  • Ajout de la prise en charge du filtrage des espaces de noms dans la restauration packages.config dans nuget.exe et msbuild /t :restore - #10737

  • Ajoutez un contrat pour identifier une source de restauration pour aider nuget à améliorer les restaurations par lots/commutateurs de branche. - #10807

  • Ajout de la prise en charge de net6.0-tizen et net6.0-android - #10819

  • Ajout de la prise en charge du filtrage des espaces de noms pour la restauration packages.config dans Visual Studio - #10823

  • Ajout de la prise en charge de TfmSpecificDebugSymbolsFile pour fournir des symboles dans la build interne - #10913

  • Affichage de l’icône d’avertissement sous l’onglet Installé s’il existe des packages vulnérables installés - #10982

  • Affichage de l’icône d’avertissement par package dans la liste des packages en cas de vulnérabilité - #10983

  • Affichage des détails de vulnérabilité du package dans le volet Détails du package du PMUI - #10985

  • Ajout des liens de dépréciation dans la page Détails de l’interface utilisateur PM - #10996

  • [Fonctionnalité] : Rend le nombre de nouvelles tentatives et le comportement d’interruption configurables pour les clients Nuget - #11027

  • [Fonctionnalité] : traite toutes les règles d’installation de package pour les espaces de noms de package fonctionnant dans les scénarios PackageReference et PackageDownload. - #11035

  • [Fonctionnalité] : Adresse toutes les règles d’installation de package pour les espaces de noms de package fonctionnant dans les projets de style Package Config - #11036

Problèmes résolus dans cette version

DCRs :

  • Envisager de supprimer l’extensibilité qui permet à d’autres gestionnaires de package d’être affichés comme compatibles - #6623

  • Arrêter d’utiliser EmbedInteropTypes pour les packages/assemblys VS extenibility de NuGet - #10892

  • Project.nuget.g.targets ne doit pas être ajouté à MSBuildAllProjects dans MSBuild 16 ou version supérieure. - #10895

  • Supprimer les API principales obsolètes - #10940

  • Fusionner NuGet.SolutionRestoreManager.Interop dans NuGet.VisualStudio - #10957

  • Supprimer RuntimeEnvironmentHelper.IsDev14 - #11000

  • Mettre à jour Newtonsoft.Json à 13.0.1 - #11095

  • [DCR] : Renommer la fonctionnalité packageNamespaces en PackageSourceMapping - #11205

Bogues  :

  • L’installation avec le mode d’enregistrement de package « nuspec » se réinstalle toujours - #2402

  • Update-Package -réinstaller -ProjectName <project> ne fonctionne pas pour PR - #6088

  • « Un élément avec la même clé a déjà été ajouté » : lorsque le graphique de projet possède le nom projectName == packageRef (de la même version) - #6795

  • [Échec de test] Suggérer de supprimer la deuxième chaîne dupliquée « Acceptation de la licence » dans la boîte de dialogue « Acceptation de la licence » - #8162

  • Impossible de supprimer la clé de configuration à l’aide de nuget.exe - #8223

  • msbuild /t :Restore et Visual Studio produisent différents fichiers de ressources lorsque le nom de l’assembly != nom du projet - #8272

  • L’interface utilisateur PM n’humanise pas le nombre de téléchargements quand 999 500 <= count <=999,999 - #8800

  • La suggestion de Roslyn Analyzer « installer avec le gestionnaire de package » ouvre NuGet à un onglet incorrect - #10124

  • StaticGraph Restore doit clairement appeler lorsqu’un projet n’est pas KnownToBeMSBuildFormat quand il est appelé via un fichier de solution - #10363

  • La commande « nuget spec » génère un fichier .nuspec avec une icôneUrl - #10400

  • Rfc3161TimestampTokenInfo.GetNonce peut lever - #10484

  • Vérifier que la commande n’est pas désactivée sur Mono - #10585

  • La méthode CreateLockFileTargetLibrary ralentit l’opération de restauration - #10614

  • PackageArchieveReader ne remplace pas CopyNupkgAsync afin que l’extraction de package échoue - #10708

  • Propager des informations sur les espaces de noms de package dans la commande restore - #10736

  • Assure que le filtrage des espaces de noms est respecté dans l’installation/les mises à jour du package packages.config dans PMUI - #10738

  • NuGet.Packaging.Extraction : exceptions des ressources introuvables - #10776

  • Impossible d’utiliser packageReadmeFile incorporé lors de l’utilisation de snupkg pour les symboles - #10791

  • Supprime les commutateurs de retards d’interface utilisateur redondants dans l’initialisation du projet NuGet - #10824

  • Supprime les énumérations ToList inutiles dans les chemins de code de restauration - #10835

  • Marquer IVsPackageInstallerServices comme déconseillé - #10836

  • Les packages NuGet téléchargés plus de 1 milliard de fois montrent l’unité incorrecte - #10864

  • Difficile de voir la couleur d’arrière-plan du nombre à droite des onglets « Mises à jour » et « Consolider » dans le thème sombre - #10896

  • Améliorations apportées à IVsProjectRestoreInfoSource - #10898

  • packages.lock.json bloqué avec le projet Sdk-Style C# ciblant net5.0-windows - #10901

  • Ajoute une implémentation par défaut pour IVsSolutionRestoreService4 - #10908

  • [Réactivité] Suppression du RPC implicite du thread d’arrière-plan via des extensions GetServiceAsync inutiles - #10916

  • La boxe de bool consistant à calculer le code de hachage provoque des allocations excessives - #10917

  • L’itération sur les dépendances de bibliothèque provoque une sur-allocation d’énumérateurs - #10918

  • La recherche du cache de compatibilité alloue Func pour chaque recherche - #10919

  • Surallocations de WhereListIterator dans DependencyWalker.CreateGraphNode - #10920

  • Exception lors de la restauration : « Restaurer les métadonnées mettant en erreur la liste des version cible de .Net Framework requise » - #10924

  • Partager un réducteur de framework entre les conventions de code managé - #10925

  • NuGet VSIX est généré avec des redirections de liaison incorrectes - #10946

  • Retards de l’interface utilisateur du Gestionnaire de package NuGet lors de l’exécution de scripts init - #10947

  • Prise en charge de sourceUri transmise sur le package de restauration/installation de nuget et dotnet restore ou d’autres commandes équivalentes - #10948

  • Prise en charge du filtrage des espaces de noms pour la commande d’installation de nuget.exe - #10961

  • Arrêter la génération de propriétés brutes pour chaque segment - #10969

  • NU1605 inattendu d’une référence transitive qui n’a jamais été sélectionnée (sous-graphe élagué) - #10972

  • NuGet.Localization n’a pas d’icône de package - #10975

  • Évite de redimensionner inutilement le dictionnaire lors du calcul de la fermeture du projet - #10976

  • Documentation en conflit sur i Paramètres. AddOrUpdate - #10980

  • Utilisation d’un tableau d’octets mis en pool lors de la copie des fichiers et de la validation des signatures - #10988

  • Évite les allocations Task.WhenAny dans le walker de dépendances - #10989

  • Garantie que le filtrage des espaces de noms est respecté dans l’installation/les mises à jour du package packages.config PMC - #11001

  • Garantie que le filtrage des espaces de noms est respecté dans packages.config installation/mise à jour des paquets API d'installation d'IVs - #11002

  • [Bogue] : l’interface utilisateur PM affiche 0 nombre de téléchargements lorsque le package sélectionné est déjà installé - #11012

  • Réduit les allocations dans VersionFormatter - #11014

  • Types inutilisés obsolètes : LibraryDependencyType et connexe - #11015

  • [Bogue] : nuget.exe install packages.config ne respecte pas -PackageSaveMode nuspec - #11018

  • [Bogue] : $(IsPackable) n’est pas cité - #11025

  • Créer des tests Apex avec des référentiels multi sources pour le filtrage de l’espace de noms du package PMUI - #11026

  • [Bogue] : [Accessibilité] Liens difficiles à lire dans les résultats de recherche de l’interface utilisateur PM à l’aide du thème clair ou foncé - #11055

  • IVsSolutionRestoreService4 doit étendre IVsSolutionRestoreService3 - #11098

  • [Bogue] : les liens de conseil doivent être alignés dans le volet d’informations de PMUI - #11101

  • L’info-bulle de l’icône d’avertissement des versions de package vulnérables/déconseillées installées n’est pas claire - #11103

  • [Réactivité] RestoreOperationLogger+StatusBarProgress.Dispose bloquant un thread de pool de threads en attente du thread d’interface utilisateur - #11115

  • Ajoute une heure depuis la dernière métrique de restauration - #11124

  • [Bogue] : régression de nuget.exe dans la gestion des entrées récursives <files> comprises entre 5.9.1 et 5.10.0 - #11125

  • En attente de WhenNominated lorsqu'un projet a une nomination en attente - #11132

  • Option sourceUri prise en charge transmise sur dotnet add package - #11140

  • [Bogue] : l’interface utilisateur VS PM n’affiche pas les icônes JPEG pour les packages - #11144

  • UIDelay : nuget.packagemanagement.visualstudio.dll!NuGet.PackageManagement.VisualStudio.VsCoreProjectSystemReferenceReader+<GetProjectReferencesAsync>d__ - Projets CPS - #11162

  • [Bogue] : dotnet list package --outdated --interactive rend le cache invalidé par le fournisseur d’informations d’identification pour chaque package répertorié - #11169

  • [Bogue] : Les espaces de noms de package pour les scénarios packages.config utilisent toutes les sources comme option de secours lorsqu’aucun espace de noms correspondant n’est trouvé pour un package - #11170

  • Évite les recherches MEF sur le thread d’interface utilisateur pendant l’initialisation des projets NuGet - #11176

  • [Bogue] : l’info-bulle sur l’image de l’indicateur d’avertissement dans l’onglet Installé ne fonctionne plus - #11183

  • Tous les appels ServiceLocator qui récupèrent les services MEF doivent éviter le thread d’interface utilisateur. - #11201

  • [Bogue] : événement de télémétrie manquant dans Visual Studio - #11206

  • Évite les appels EnvDTEProjectUtility.IsSupportedAsync dupliqués - #11207

  • Ajout de IVsSolutionManager.GetSolutionDirectoryAsync : amélioration des performances et arrêt du blocage du thread appelant dans des chemins de code asynchrones. - #11208

  • Renomme les types/variables dans le code de produit/test pour refléter le nouveau nom de la fonctionnalité d’espaces de noms de package - #11216

  • [Bogue] : la génération ArPow ne fonctionne pas correctement lorsqu’elle se trouve dans un sous-répertoire d’un référentiel Git non lié - #11227

  • liste dupackage dotnet --vulnérable, --déconseillé, --obsolète ne fonctionne pas pour les positifs transitif uniquement - #10767

Liste de tous les problèmes résolus dans cette version - 6.0

Liste des validations dans cette version - 6.0.0

Récapitulatif : Nouveautés de la version 6.0.1

Seul Visual Studio a été mis à jour avec cette version de NuGet.

Problèmes résolus dans cette version

  • [Bogue] : Impossible d’obtenir INuGetProjectService à partir du service Broker dans Visual Studio 17 - #11367
  • [Bogue] : Gestionnaire de package d’initialisation de la console peut entraîner des interblocages - #11320

Liste des validations dans cette version - 6.0.1

Contributions de la communauté

Merci à tous les contributeur qui ont aidé à rendre cette version NuGet géniale !

Qui PRs Problèmes
omajid 3866 Gére la valeur null dans Rfc3161TimestampTokenInfo - #10484
marcin-krystianc 3934 Ajout d’un cache pour LockFileTargetLibrary - #10614
krafs 4151 Suppression de la valeur de retour de la documentation sur I Paramètres. AddOrUpdate - #10980
huangqinjin 4148 Corrige packageSaveMode nuspec se réinstalle toujours - #2402
Insomniak47 4190 fix(docs) : supprime le lien vers le lien fermé/mort dans les instructions de contribution - #8987
marcin-krystianc 4194 Rend le compte des scripts de performances pour les échecs d’opération de restauration - #9968
eriawan 4159 Correctifs Surround ($IsPackable) avec guillemets simples - #11025
huangqinjin 4193 Installer packages.config doit respecter PackageSaveMode - #11018
mfkl 4199 test : utilise la nouvelle DependencyGraphSpec - #11168
omajid 4254 Utilise --work-tree avec git apply - #11227

Vos commentaires sont les bienvenus.

Vos commentaires sont très importants pour nous. S’il existe des problèmes avec cette version, vérifiez nos problèmes GitHub et Visual Studio Developer Community pour les problèmes existants. Pour les nouveaux problèmes dans NuGet, signalez un Problème GitHub. Pour connaître les problèmes généraux liés à l’expérience NuGet, faites-nous en part via l’option Signaler un problème dans votre IDE favori sous Aide > Signaler un problème.