2022LogoNotes de publication Visual Studio 2022 version 17.0


Conseil

Regardez les enregistrements de l’événement de lancement de Visual Studio 2022 pour découvrir les nouveautés, apprendre des trucs et astuces, mais également télécharger des cadeaux numériques gratuits.

Developer Community | Feuille de route de Visual Studio 2022 | Exigences système | Compatibilité | Code distribuable | Historique de publication | Termes du contrat de licence | Blogs | Derniers problèmes connus | Nouveautés de la documentation Visual Studio


Visual Studio 2022 version 17.0

La prise en charge de Visual Studio 2022 version 17.0 a pris fin en juillet 2023, ce qui signifie qu’il n’y aura plus de mises à jour de sécurité pour cette version. Les abonnés Entreprise et Professionnel qui utilisent Visual Studio 2022 17.0 LTSC doivent adopter la dernière version de canal ou LTSC.

Découvrez les versions et les dates de support de Visual Studio 2022.

Découvres le cycle de vie et les services de maintenance des produits Visual Studio

Visitez le site Visual Studio pour accéder aux liens des versions les plus récentes des produits Visual Studio 2022. Pour obtenir des instructions sur l’installation et la mise à jour de Visual Studio 2022, reportez-vous à Mettre à jour Visual Studio 2022 vers la version la plus récente. Le Guide de l’administrateur Visual Studio contient des conseils pour déployer Visual Studio au sein de votre organisation.

Dates de mises en publication de Visual Studio 2022 version 17.0

Blog Visual Studio 2022

Le blog sur Visual Studio 2022 est la source officielle des insights sur le produit, partagés par la l’équipe d’ingénierie Visual Studio. Vous trouverez des informations détaillées sur les versions de Visual Studio 2022 dans les billets de blog suivants :


17.0.23Visual Studio 2022 version 17.0.23

publié le 11 juillet 2023

Problèmes résolus dans la version 17.0.23

  • Microsoft est conscient d’une vulnérabilité où il existe une possibilité d’injection d’adresses SMTP qui peut se produire dans la classe SmtpClient. Cela correspond à CVE-2022-26893 (pas un CVE publié, car la vulnérabilité est évaluée comme moyenne).

Avis de sécurité résolus


17.0.22Visual Studio 2022 version 17.0.22

publié le 13 juin 2023

Problèmes résolus dans la version 17.0.22

  • Microsoft est conscient d’une vulnérabilité où il existe une possibilité d’injection d’adresses SMTP qui peut se produire dans la classe SmtpClient. Cela correspond à CVE-2022-26893 (pas un CVE publié, car la vulnérabilité est évaluée comme moyenne).

Avis de sécurité résolus


17.0.21Visual Studio 2022 version 17.0.21

publiée le 11 avril 2023

Problèmes résolus dans la version 17.0.21

  • Corrige un incident lorsque l’entrée non valide est envoyée au pilote utilisé lors de la formation PGO pour les pilotes en mode noyau.
  • Correction d’un problème dans IIS Express qui pouvait provoquer un blocage lors de la mise à jour des données de télémétrie.
  • Microsoft est conscient d’une vulnérabilité où il existe une possibilité d’injection d’adresses SMTP qui peut se produire dans la classe SmtpClient. Cela correspond à CVE-2022-26893 (pas un CVE publié, car la vulnérabilité est évaluée comme moyenne).

Communauté des développeurs

Avis de sécurité résolus


17.0.20Visual Studio 2022 version 17.0.20

publiée le 14 mars 2023

Problèmes résolus dans la version 17.0.20

  • Microsoft est conscient d’une vulnérabilité où il existe une possibilité d’injection d’adresses SMTP qui peut se produire dans la classe SmtpClient. Cela correspond à CVE-2022-26893 (pas un CVE publié, car la vulnérabilité est évaluée comme moyenne).
  • Git 2.39 a renommé la valeur de credential.helper de « manager-core » en « manager ». Consultez la rubrique https://aka.ms/gcm/rename (éventuellement en anglais) pour plus d'informations.
  • Mises à jour pour mingit et Git pour le package Windows vers v2.39.2, qui traite CVE-2023-22490

Avis de sécurité résolus


17.0.19Visual Studio 2022 version 17.0.19

publiée le 14 février 2023

Problèmes résolus dans la version 17.0.19

  • Mise à jour de l’interpréteur CPython vers la version 3.9.13.
  • Mises à jour de minGit et Git pour le package Windows vers v2.39.1.1, qui résout CVE-2022-41903

Avis de sécurité résolus

17.0.18Visual Studio 2022 version 17.0.18

publiée le 10 janvier 2023

Avis de sécurité résolus

  • CVE-2023-21538 Vulnérabilité de déni de service dans .NET Une vulnérabilité de déni de service existe dans .NET 6.0 où un client malveillant peut provoquer un dépassement de la capacité de la pile pouvant entraîner une attaque par déni de service quand un attaquant envoie une requête non valide à un point de terminaison exposé.

17.0.17Visual Studio 2022 version 17.0.17

publiée le 13 décembre 2022

Avis de sécurité résolus

  • CVE-2022-41089 Exécution de code à distance Une vulnérabilité d’exécution de code à distance existe dans .NET Core 3.1, .NET 6.0 et .NET 7.0, où un acteur malveillant peut entraîner l’exécution d’un code arbitraire à la suite de l’analyse de fichiers xps créés de manière malveillante.

17.0.16Visual Studio 2022 version 17.0.16

publiée le 8 novembre 2022

Problèmes résolus dans la version 17.0.16

Avis de sécurité résolus


17.0.15Visual Studio 2022 version 17.0.15

Publication : 11 octobre 2022

Problèmes résolus dans la version 17.0.15

  • Les administrateurs pourront mettre à jour le programme d’installation VS sur un ordinateur client hors connexion à partir d’une disposition sans mettre à jour VS.

Avis de sécurité résolus


17.0.14Visual Studio 2022 version 17.0.14

Publication : 13 septembre 2022

Problèmes résolus dans la version 17.0.14

Avis de sécurité résolus

CVE-2022-38013 Vulnérabilité de déni de service .NET Une vulnérabilité de déni de service existe dans ASP.NET Core 3.1 et .NET 6.0 où un client malveillant peut provoquer un dépassement de capacité de pile qui peut entraîner un déni de service lorsqu’un attaquant envoie une charge utile personnalisée analysée pendant la liaison de modèle.


17.0.13Visual Studio 2022 version 17.0.13

Publication : 9 août 2022

Problèmes résolus dans la version 17.0.13

  • Résout l’erreur Git après la mise à jour 17.1.4 - Commentaires sur Visual Studio fournissant l’option permettant de marquer un dépôt Git comme sécurisé via Visual Studio.
  • Met à jour MinGit vers la version 2.37.1.1 pour traiter CVE - CVE-2022-29187 (mitre.org), qui a exposé les utilisateurs à une vulnérabilité où ils accèdent à un référentiel dont ils possèdent, mais que d’autres utilisateurs peuvent écrire pour exécuter du code malveillant.
  • Met à jour Git pour Windows vers v2.37.1.1 ciblant CVE-2022-31012.

Avis de sécurité résolus


17.0.12Visual Studio 2022 version 17.0.12

Publication : 12 juillet 2022

Problèmes résolus dans la version 17.0.12

  • Mise à jour de LibraryManager pour prendre en charge les modifications apportées à l’API cdnjs
  • Correction d’un bogue dans lequel l’éditeur de texte était vide lors de l’ouverture d’un document ou qui provoquait un blocage lors de la saisie.

Avis de sécurité résolus


17.0.11Visual Studio 2022 version 17.0.11

Publication : 14 juin 2022

Problèmes résolus dans la version 17.0.11

  • Mise à jour côte à côte de l’ensemble d’outils Dev 16.11 C++ vers la version 14.29.30145.00. La dernière version de l’ensemble d’outils Dev 16.11 C++ contient des correctifs de bogues importants, dont la correction de tous les rapports de défauts C++20 restants. Pour plus d’informations, consultez les notes de publication 16.11.14.

À partir de Developer Community

Avis de sécurité résolus


17.0.10Visual Studio 2022 version 17.0.10

publiée le 10 mai 2022

Problèmes résolus dans la version 17.0.10

  • Mise à jour de La version Git pour Windows consommée par Visual Studio et composant en option installable vers la version 2.36.0.1
  • Correction d’un problème lié à l’intégration Git, où si l’extraction/la synchronisation des branches qui ont divergé, la fenêtre de sortie n’affichait pas d’indicateur localisé sur la façon de le résoudre.
  • Correction d’un problème où lors de l’ouverture d’un dépôt Git dans Visual Studio, la fenêtre de sortie affiche « Une ou plusieurs erreurs se sont produites » au lieu de la raison pour laquelle l’échec se produit et comment le résoudre.
  • Mise à jour de la base de référence webview2 dans Daytona

À partir de Developer Community

Avis de sécurité résolus

[CVE-2022-29117 Vulnérabilité de déni de service .NET Une vulnérabilité existe dans .NET 6.0, .NET 5.0 et .NET Core 3.1 où un client malveillant peut manipuler des cookies et provoquer un déni de service.

CVE-2022-23267 Vulnérabilité de déni de service .NET Core Une vulnérabilité existe dans .NET 6.0, .NET 5.0 et .NET Core 3.1 où un client malveillant peut provoquer un déni de service via des allocations de mémoire excédentaires via HttpClient.

CVE-2022-29145 Vulnérabilité de déni de service .NET Une vulnérabilité existe dans .NET 6.0, .NET 5.0 et .NET Core 3.1 où un client malveillant peut provoquer un déni de service lorsque les formulaires HTML sont analysés.

CVE-2022-24513 Vulnérabilité d’élévation des privilèges Une vulnérabilité potentielle d’élévation de privilèges existe lorsque le service de mise à jour Microsoft Visual Studio analyse incorrectement les données de configuration locales.


17.0.9Visual Studio 2022 version 17.0.9

publiée le 19 avril 2022

Problèmes résolus dans la version 17.0.9

  • Correction de la régression vctip.exe de la version 17.0.8
  • Correction d’un bogue empêchant que certaines applications créées avec l’ASAN (Address Sanitizer) se chargent dans Windows 11.
  • Correction d’un autre problème ASAN où les applications multithread avec contention de tas peuvent rencontrer des interblocages, des rapports faux « pointeur sauvage libéré » ou un interblocage pendant la sortie du processus.
  • Correction du problème « Impossible d’installer une extension (vsix) pour Visual Studio sur un ordinateur hors connexion ».

17.0.8Visual Studio 2022 version 17.0.8

publiée le 12 avril 2022

Problèmes résolus dans la version 17.0.8

À partir de Developer Community

Avis de sécurité résolus

CVE-2022-24765 Vulnérabilité d’élévation de privilèges Une vulnérabilité potentielle d’élévation de privilèges existe dans Git pour Windows, dans laquelle les opérations Git peuvent s’exécuter en dehors d’un dépôt pendant la recherche d’un répertoire Git. Git pour Windows est désormais mis à jour vers la version 2.35.2.1.

CVE-2022-24767 Vulnérabilité de détournement de DLL Une vulnérabilité potentielle de détournement de DLL existe dans le programme d’installation de Git pour Windows pendant l’exécution du programme de désinstallation sous le compte d’utilisateur SYSTEM. Git pour Windows est désormais mis à jour vers la version 2.35.2.1.

CVE-2022-24513 Vulnérabilité d’élévation des privilèges Une vulnérabilité potentielle d’élévation de privilèges existe lorsque le service de mise à jour Microsoft Visual Studio analyse incorrectement les données de configuration locales.


17.0.7Visual Studio 2022 version 17.0.7

publiée le 8 mars 2022

Problèmes résolus dans la version 17.0.7

  • Amélioration des performances sur les moniteurs à taux de rafraîchissement élevé.
  • Correction d’un blocage au démarrage de Visual Studio pour les utilisateurs de SKU Community.

À partir de Developer Community

La Visual Studio Developer Community contient une liste complète des correctifs disponibles dans la version 17.0.

Avis de sécurité résolus

CVE-2020-8927 Vulnérabilité Il existe une vulnérabilité d’exécution de code à distance dans .NET 5.0 et .NET Core 3.1 où un dépassement de mémoire tampon se manifeste dans les versions de la bibliothèque Brotli antérieures à 1.0.8.

CVE-2022-24464 Vulnérabilité Il existe une vulnérabilité de déni de service dans .NET 6.0, .NET 5.0 et .NET CORE 3.1 lors de l’analyse de certains types de requêtes de formulaire http.

CVE-2022-24512 Vulnérabilité Il existe une vulnérabilité d’exécution de code à distance dans .NET 6.0, .NET 5.0 et .NET Core 3.1 où un dépassement de mémoire tampon de pile se produit dans la routine d’analyse double de .NET.

CVE-2021-3711 Vulnérabilité de dépassement de mémoire tampon dans OpenSSL Il existe une vulnérabilité potentielle de dépassement de mémoire tampon dans OpenSSL, qui est consommé par Git pour Windows. Git pour Windows est désormais mis à jour sur la version 2.35.1.2, qui résout ce problème.


17.0.6Visual Studio 2022 version 17.0.6

publiée le 8 février 2022

Problèmes résolus dans la version 17.0.6

  • Mise à jour du programme d’installation de Visual Studio pour enregistrer correctement les métadonnées du canal.
  • Bulletins de version publiés dans Visual Studio Installer pour une installation ou une mise à jour.
  • Ajout d’informations sur les dates d’expiration du canal LTSC dans la boîte de dialogue Paramètres de mise à jour.
  • Ajout de la possibilité de modifier par programmation l’emplacement source des mises à jour indépendamment de l’exécution de la mise à jour. Cela permet aux administrateurs informatiques de modifier par programme le canal de mise à jour.
  • Mise à jour de l’expérience d’ajout de compte GitHub pour améliorer son taux de réussite.

Avis de sécurité résolus

CVE-2022-21986 Vulnérabilité Il existe une vulnérabilité de déni de service dans .NET 5.0 et .NET 6.0 lorsque le serveur web Kestrel traite certaines requêtes HTTP/2 et HTTP/3


17.0.5Visual Studio 2022 version 17.0.5

publiée le 13 janvier 2022

Problèmes résolus dans la version 17.0.5

  • Résolution d’une instance intermittente où VSInstr ne quitte pas lors de l’instrumentation d’un binaire avec des métadonnées volatiles, entraînant l’échec du profilage d’instrumentation.
  • Correction des problèmes où link.exe se bloque occasionnellement lors de la production de PDB avec le fichier binaire.
  • Correction d’un bogue dans C++ Concurrency::parallel_for_each qui plante le processus d’appel en raison d’un dépassement d’entiers.
  • Correction d’un bogue dans les comparaisons CString d’ATL sous C++20 et sous les derniers modes de langage C++.
  • Correction d’un incident lors de l’exécution d’un binaire PGI-ed sur arm64 et arm64ec lorsqu’un grand nombre de sondes pogo ont été utilisées.
  • Correction d’un problème : l’optimisation des fonctions très volumineuses pouvait générer du code incorrect.

17.0.4Visual Studio 2022 version 17.0.4

publiée le 16 décembre 2021

Problèmes résolus dans la version 17.0.4

  • Ajout de la prise en charge de Xcode 13.2.

17.0.3Visual Studio 2022 version 17.0.3

publiée le 14 décembre 2021

Problèmes résolus dans la version 17.0.3

Rendu de caractères de contrôle de texte bidirectionnel

Pour empêcher un code potentiellement malveillant qui exploite une faille de sécurité permettant au code d’être déformé, l’éditeur Visual Studio n’autorise plus les caractères de contrôle de texte bidirectionnels à manipuler l’ordre des caractères sur la surface d’édition. Une nouvelle option permet d’afficher ces caractères de contrôle de texte bidirectionnels avec des espaces réservés. Les caractères de contrôle de texte bidirectionnels sont toujours présents dans le code, car ce comportement touche uniquement ce qui est rendu dans l’éditeur de code.

VS with bidirectional text control characters replaced with placeholders

Cette fonctionnalité est contrôlée dans Outils\Options. Sous la page Éditeur de texte\Général, il existe une option pour « Afficher les caractères de contrôle de texte bidirectionnels » qui est cochée par défaut. Une fois l’option cochée, tous les caractères de contrôle de texte bidirectionnels sont rendus en tant qu’espaces réservés. Décocher l’option rétablit le comportement précédent où ces caractères ne sont pas rendus.

Un caractère Unicode est considéré comme caractère de contrôle de texte bidirectionnel s’il se trouve dans l’une des plages suivantes : U+061c, U+200e-U+200f, U+202a-U+202e, U+2066-U+2069.

  • Correction d’un incident dans le Concepteur Web Forms
  • Correction d’un problème où la saisie semi-automatique CSS pour !important insérait du texte à un emplacement incorrect dans des fichiers HTML ou Razor.
  • Correction d’une régression avec le Rechargement à chaud XAML Xamarin.Forms en conflit avec les bibliothèques qui partagent des dépendances similaires, telles que SignalR. Le Rechargement à chaud XAML Xamarin.Forms devrait désormais être en mesure d’interagir indépendamment de ce qui est chargé dans votre application.
  • Correction d’un problème où les pages Vue d’ensemble du projet, les Outils de diagnostic ou les fenêtres Profileur de performances seraient parfois vides.
  • Correction d’un problème dans la modification du fichier Razor où le curseur sautait parfois vers un autre emplacement en cours de saisie.

À partir de Developer Community

La Visual Studio Developer Community contient une liste complète des correctifs disponibles dans la version 17.0.

Avis de sécurité résolus

CVE-2021-43877 Vulnérabilité .NET Il existe une vulnérabilité d’élévation de privilèges dans ANCM qui peut permettre une élévation de privilèges lorsque les applications .NET Core, .NET 5 et .NET 6 sont hébergées dans IIS.

CVE-2021-42574 Vulnérabilité de caractères de contrôle de texte Les caractères de contrôle de texte bidirectionnels peuvent être utilisés pour rendre le code dans l’éditeur différemment de ce qui est contenu sur le disque.


17.0.2Visual Studio 2022 version 17.0.2

publiée le 30 novembre 2021

Problèmes résolus dans la version 17.0.2

  • Correctif pour le codegen sans assistance avec des opérations de type memmove avec des données qui se chevauchent
  • Ajout de la messagerie dans la fenêtre de sortie qui s’affiche lors de l’utilisation de modules C++ ou d’unités d’en-tête. Cela contient actuellement des problèmes connus lors de l’utilisation de modules ou d’unités d’en-tête avec IntelliSense.
  • Résolution du problème lié aux pages de vue d’ensemble CMake et à l’éditeur CMakeSettings bloqués sur « En attente de fin de l’initialisation de IntelliSense...»
  • Correction d’un problème où un destructeur de modèle impliqué dans une hiérarchie de classes avec des initialiseurs de membre de données peut être instancié trop tôt, ce qui peut entraîner des diagnostics incorrects sur les utilisations de types non définis ou d’autres erreurs.
  • Ajout de Python 3.9.7 à la charge de travail Python. Suppression de Python 3.7.8 en raison d’une vulnérabilité de sécurité.
  • Correction d’un problème où l’option Recherche suivante (F3) et Rechercher la sélection suivante (Ctrl+F3) sautait parfois à la première occurrence dans le fichier au lieu de l’occurrence suivante.
  • Correction d’un problème où les dates dans les interfaces utilisateur du contrôle de version ne respectaient pas les paramètres régionaux du système d’exploitation du client.
  • Correction d’un problème sur Windows 11 où les clients définissent le terminal Windows comme étant par défaut et que le débogueur ne peut pas arrêter de déboguer une application console et empêche les démarrages futurs.

À partir de Developer Community

La Visual Studio Developer Community contient une liste complète des correctifs disponibles dans la version 17.0.


17.0.1Visual Studio 2022 version 17.0.1

publiée le 16 novembre 2021

Problèmes résolus dans la version 17.0.1

  • Correction d’un incident lors de l’utilisation de builds par lots.
  • Correction d’un incident lors du lancement de projets Xamarin.Forms avec le Rechargement à chaud XAML activé.

À partir de Developer Community

La Visual Studio Developer Community contient une liste complète des correctifs disponibles dans la version 17.0.

17.0.0Visual Studio 2022 version 17.0.0

publiée le 8 novembre 2021

Résumé des nouveautés de cette mise en production de Visual Studio 2022 version 17.0.0

64 bits

  • devenv.exe est désormais en 64 bits uniquement

Azure Cloud Services

  • Les nouveaux projets Azure Cloud Service (classique) ne sont pas pris en charge en raison d’une obsolescence dans Azure pour les nouveaux clients. Les projets Azure Cloud Service (support étendu) sont recommandés comme remplacement.
  • Les projets Azure Cloud Service (classique) existants peuvent être ouverts et sont entièrement pris en charge.

C++

  • Les outils de génération v143 sont désormais disponibles via le programme d’installation de Visual Studio et dans les outils de génération autonomes.
  • La nouvelle expérience de Rechargement à chaud est désormais disponible pour les applications C++ natives lors de l’exécution sous débogueur. Elle prend en charge les projets MSBuild et CMake. Pour plus d’informations, consultez notre section Rechargement à chaud ci-dessous.
  • Vous pouvez maintenant générer et déboguer en mode natif sur WSL2 sans établir de connexion SSH. Les projets CMake multiplateformes et les projets Linux MSBuild sont pris en charge.
  • Visual Studio prend désormais en charge l’option buildPresets.targets dans CMakePresets.json. Cette option vous permet de créer un sous-ensemble de cibles dans votre projet CMake.
  • Le menu Projet dans les projets CMake a été simplifié et expose les options « Supprimer le cache et reconfigurer » et « Afficher le cache ».
  • Les pages de vue d’ensemble CMake ont été mises à jour pour prendre en charge CMakePresets.json.
  • Indicateur /scanDependencies implémenté pour la sortie des dépendances de module C++20 pour les projets CMake, comme décrit dans P1689r4. Il s’agi td’une étape vers la prise en charge de la création de projets basés sur des modules avec CMake, et nous travaillons à finaliser cette prise en charge dans les versions ultérieures.
  • Vous pouvez maintenant déboguer des processus s’exécutant sur un système distant à partir de Visual Studio en utilisant LLDB.
  • Nous avons mis à niveau la version de CMake livrée avec Visual Studio vers la version 3.21. Pour plus d’informations sur ce qui est disponible, consultez les Notes de publication de CMake 3.21.
  • Les outils LLVM fournis avec Visual Studio ont été mis à niveau vers LLVM 12. Pour plus d’informations, consultez les notes de publication LLVM.
  • L’ensemble d’outils MSVC utilise désormais par défaut le hachage source SHA-256 dans les enregistrements de débogage. Auparavant, l’ensemble d’outils utilisait MD5 pour le hachage source par défaut.
  • La charge de travail Développement de jeux avec C++ installe désormais le moteur Unreal le plus récent avec prise en charge de Visual Studio 2022.
  • Nous avons apporté des améliorations à IntelliSense C++ en lien avec la mise en évidence de la navigation et de la syntaxe pour les types à partir de modules et d’unités d’en-tête importés.
  • Nous avons amélioré les performances d’IntelliSense C++ en optimisant l’utilisation d’en-tête mis en cache et l’accès à la base de données de symboles, ce qui offre de meilleurs temps de chargement pour accéder à votre code.
  • Le Linter de code IntelliSense pour C++ est désormais activé par défaut, fournissant des suggestions instantanées pendant que vous-tapez, et des suggestions de correctif pour les défauts de code courants.
  • Prise en charge de libfuzzer sous le commutateur -fsanitize=fuzzer. Pour plus d’informations, consultez la documentation .
  • Nous avons amélioré la détection de déréférencement du pointeur null dans nos outils d’analyse du code.
  • L’analyse du code impose désormais que les valeurs de retour des fonctions annotées avec _Check_return_ ou _Must_inspect_result_ soient vérifiées.
  • Ajout de la prise en charge de gsl::not_null l’analyse du code.
  • Mise à jour vers NDK r21 LTS dans la charge de travail Développement mobile C++.
  • Les en-têtes C++ AMP sont désormais déconseillés. L’inclusion <d’amp.h> dans un projet C++ génère des erreurs de build. Pour ignorer les erreurs, définissez _SILENCE_AMP_DEPRECATION_WARNINGS. Pour plus d’informations, consultez nos liens de dépréciation AMP.

Débogage et diagnostics

  • Améliorations apportées à la boîte de dialogue Traiter
  • Améliorations apportées à l’aide aux exceptions
  • Forcez l’exécution jusqu’au clic
  • Analyse des diagnostics de vidage de mémoire
  • Nous avons publié un nouveau type de point d’arrêt appelé point d’arrêt dépendant, ce qui vous permet de configurer un point d’arrêt pour qu’il soit activé uniquement si un autre point d’arrêt est atteint pour la première fois.
  • Nous avons ajouté d’autres mises à jour au nœud Sources Extrenal, vous pouvez maintenant voir le module sous le sous-nœud « Modules sans sources » et charger l’Explorateur de solutions de formulaire de symboles lui-même.
  • Améliorations apportées aux énoncés de point d’arrêt
  • Point d’arrêt temporaire
  • Point d’arrêt glisser-déposer
  • Nœud sources externes dans l’Explorateur de solutions
  • Améliorations apportées à la boîte de dialogue Traiter

Personnalisation

  • Onglets couleur ajoutés pour les onglets verticaux et horizontaux
  • Ajout du pack de thèmes et utilisation des auteurs de thèmes VS Code pour lancer la collection de thèmes personnalisés
  • Convertisseur de thème généré pour convertir des thèmes VS Code en vue de fonctionner dans Visual Studio 2022
  • Fonctionnalité ajoutée pour synchroniser le thème Visual Studio avec le thème Windows
  • Ajout de nouvelles fonctionnalités de gestion des documents notamment personnalisation de la largeur des onglets, mise en gras du document actif et bouton de fermeture supplémentaire dans docwell.

Éditeur

  • Ajout de la navigation dans les sous-mots
  • L’enregistrement automatique est désormais disponible en tant que fonctionnalité d’évaluation
  • Expérience de copier/coller multi-caret

Extensibilité

  • Suppression des API des assemblies Microsoft.VisualStudio.Language.Client
  • VS SDK contient plusieurs changements cassants et les extensions Visual Studio 2019 ne fonctionneront pas dans 2022. Pour plus d’informations, consultez la documentation VSSDK.
  • Les assemblies de VS SDK ne sont plus installés dans le dossier VSSDK\VisualStudioIntegration\Common\Assemblies. Si votre build s’appuyait sur ces assemblies, migrez votre projet pour utiliser des packages NuGet à la place. Pour les scénarios hors connexion :
    1. Conservez un flux nuget in-org à partir duquel restaurer les packages nuget.
    2. Archivez les fichiers binaires.
  • Ajout de correctifs de changements cassants ILanguageClient

Services Cloud

  • Azurite sera utilisé pour l’émulation locale du stockage Azure au lieu de l’ancien émulateur de stockage Azure qui n

Outils Git

Menu Aide

  • Au cours de la version 17.0, nous avons remodelé le menu d’aide avec du matériel de prise en main et des conseils/astuces utiles.
  • Fournit davantage de collaboration avec notre équipe de développement en ajoutant des éléments tels que l’accès à la communauté des Développeurs, aux notes de publication, à la feuille de route du produit Visual Studio et à nos pages de réseaux sociaux.

Expérience de Rechargement à chaud

  • Le Rechargement à chaud est désormais disponible pour les développeurs .NET via le débogueur Visual Studio et sans le débogueur pour de nombreux types d’applications .NET 6
  • Le Rechargement à chaud est désormais disponible pour les développeurs C++ lors de l’utilisation du débogueur Visual Studio

Pour plus d’informations, consultez le lien ci-dessus

IntelliCode

  • Les saisies complètes de ligne prédisent votre prochain bloc de code C# basé sur votre contexte actuel et le présente sous forme de suggestion inlined à droite de votre curseur.
  • Les saisies complètes de ligne sont désormais compatibles avec les builds les plus récents de JetBrains ReSharper. Notez que la mise à jour du contexte de saisie complète de ligne basée sur la sélection d’éléments de liste de saisie semi-automatique personnalisés ReSharpers n’est pas prise en charge. Si nécessaire, les utilisateurs de ReSharper peuvent choisir d’utiliser Visual Studio Native IntelliSense à la place, comme indiqué ici

JavaScript/TypeScript

  • Nous avons publié un nouveau type de projet JavaScript/TypeScript qui génère des projets JavaScript/TypeScript autonomes avec des outils supplémentaires. Vous pourrez créer des projets Angular et React dans Visual Studio à l’aide de la version du framework installée sur votre ordinateur.
  • Les tests JavaScript et TypeScript sont désormais disponibles dans l’Explorateur de tests Visual Studio
  • L’interface graphique NPM est disponible pour vous permettre de télécharger les modules NPM de la même façon que les packages Nuget

SDK .NET 6

  • Le Kit de développement logiciel (SDK) .NET 6 est inclus dans Visual Studio 2022

Productivité .NET

  • Introduire la refactorisation des paramètres peut déplacer un nouveau paramètre de l’implémentation de la méthode vers ses appelants.
  • Suivre la source de valeur pour l’analyse du flux de données
  • Option permettant de souligner les variables ré-attribuées
  • Ajout de l’option de recherche dans la boîte de dialogue Générer les remplacements
  • Les informations rapides pour les balises de <code > XML conservent désormais les espaces blancs et les blocs CDATA
  • La fenêtre Rechercher toutes les références regroupe désormais des projets multi-cibles
  • Refactorisation pour supprimer des types répétitifs en Visual Basic
  • Accédez à Implémentation n’accédera plus aux membres avec des déclarations abstraites qui sont également substituées.
  • Synchroniser les espaces de noms pour qu’ils correspondent à votre structure de dossiers à partir de l’Explorateur de solutions
  • Configurer l’analyse du code en arrière-plan à partir de l’Explorateur de solutions
  • Les types de référence nullables sont désormais activés par défaut pour les nouveaux projets .NET
  • Refactorisation de l’espace de noms dans l’étendue du fichier C# 10.0
  • Accéder aux sources décompilées est désormais activé par défaut
  • Refactorisation pour préférer la vérification du contrôle Null à la vérification du type
  • Les commentaires XML génèrent désormais automatiquement une balise <exception> lorsqu’une méthode lève explicitement des exceptions
  • La marge d’héritage est désormais activée par défaut

Langages de programmation

  • C# 10

Éditeur Razor (ASP.NET Core)

  • Réduction des blocages de l’interface utilisateur et amélioration des performances lors du démarrage de la solution
  • Colorisation sémantique plus rapide jusqu’à 2x dans certaines solutions
  • Prise en charge de F7 (afficher le code) dans les fichiers Razor
  • Prise en charge des extraits de code dans les fichiers Razor pour terminer une session d’extraits de code avec un seul onglet au lieu d’appuyer sur tabulation-tabulation
  • Meilleure mise en forme dans les blocs @code lorsqu’il existe des composants HTML et Razor imbriqués
  • Prise en charge du Rechargement à chaud dans les fichiers Razor
  • Améliorations des performances
  • Améliorations de la mise en forme et de la mise en retrait
  • Nouvelles couleurs de l’éditeur Razor
  • TagHelpers est désormais colorisé et dispose d’une prise en charge rapide de la classification des informations et d’info-bulles d’achèvement
  • Mise en surbrillance des accolades d’angle et navigation pour les constructions Razor
  • Les commentaires ont désormais la saisie semi-automatique, la mise en retrait intelligente, l’inclusion automatique des continuations de commentaires et le blocage de la navigation dans les commentaires

Test à distance

  • Préversion expérimentale très précoce de l’activation des tests sur des environnements distants tels que des conteneurs Linux, WSL et via des connexions SSH.

Prise en charge des outils de test

  • Afficher dans l'Explorateur de tests
  • Les nouvelles versions de la plateforme de test à partir de la version 17.0 ne pourront pas exécuter de tests génériques et de tests ordonnés. Ces fonctionnalités spécifiques sont fournies uniquement dans le cadre d’une version anticipée de MSTestv1 et ne sont pas incluses dans MSTestv2. Nous voyons une utilisation très faible de ces fonctionnalités et des tests ordonnés sont désormais considérés comme contraires aux meilleures pratiques de test.
  • Certaines expériences de test ne seront pas disponibles dans la version 17.0, notamment la création de fichiers TestSettings et l’éditeur TestSettings. Les exécutions de test pourront toujours utiliser les fichiers TestSettings, mais TestSettings a été remplacé par RunSettings et nous encourageons les utilisateurs à migrer les performances et les fonctionnalités améliorées. En savoir plus.
  • Mise à jour de Tests de charge web et tests codés de l’interface utilisateur. Tests codés de l’interface utilisateur et [Tests de charge web](fin de vie du service de test de charge basé sur le cloud | Le blog Azure DevOps (microsoft.com) a été officiellement déconseillé en 2019. Pour réduire l’impact sur les utilisateurs, il existe une prise en charge minimale de ces fonctionnalités dans Visual Studio 2022. Nous encourageons vivement les utilisateurs à renoncer au Test codé de l’interface utilisateur et au Test de charge web.

Remplissage de boîte à outils pour les kits SDK d’extension UWP

  • Les kits SDK d’extension UWP sont désormais nécessaires pour déclarer explicitement les types qu’ils souhaitent faire apparaître dans la boîte à outils en les listant dans leur fichierSdkManifest.xml. Le comportement des versions antérieures de Visual Studio n’est pas modifié. Elles ignorent la liste des contrôles dans le manifeste et énumèrent dynamiquement à la place les types de contrôles dans les assemblies du Kit de développement logiciel (SDK).

Emplacements approuvés

  • Nous avons amélioré la fonctionnalité « Paramètres d’approbation » et pouvons maintenant afficher un avertissement chaque fois que le code non approuvé (par exemple, les fichiers, les projets ou les dossiers) est sur le point d’être ouvert dans l’IDE.
  • Les vérifications d’approbation sont désormais effectuées au niveau du dossier de la solution
  • Les projets créés par l’utilisateur sont automatiquement ajoutés à la liste approuvée
  • Les utilisateurs peuvent ignorer les vérifications d’approbation sur les emplacements temporaires créés par Visual Studio

Mises à jour, déploiement et LTSC

  • Avec Visual Studio 2022, plusieurs bases de référence de maintenance seront prises en charge de manière simultanée et seront mises en production à l’automne et au printemps. Pour plus d’informations, consultez la documentation sur le rythme de publication de Visual Studio et le cycle de vie des produits Visual Studio 2022.
  • Le nouveau programme d’installation fourni avec Visual Studio 2022 a désormais la possibilité de configurer l’emplacement à partir duquel le produit Visual Studio doit obtenir ses mises à jour. Cela vous permet de choisir des mises à jour à partir d’un autre LTSC ou, si vous êtes dans un environnement d’entreprise managé, vous pouvez configurer le client pour obtenir ses mises à jour à partir d’une disposition. La possibilité de configurer la source pour les mises à jour est une nouvelle fonctionnalité fournie avec Visual Studio Installer. Par conséquent, le comportement s’applique également aux versions de niveau inférieur de Visual Studio, telles que Visual Studio 2019. Pour plus d’informations sur la configuration du canal de mise à jour, reportez-vous à la documentation de mise à jour de Visual Studio . Pour plus d’informations sur la façon de le faire fonctionner avec les dispositions réseau, reportez-vous au Guide des administrateurs Visual Studio.
  • Les administrateurs informatiques peuvent désormais signaler des problèmes sans que Visual Studio ne soit installé.

Interface utilisateur

  • Les icônes par défaut ont été mises à jour et actualisées.

Outils web

  • La page de Synthèse de publication comporte désormais des actions pour démarrer/ arrêter le débogage à distance et le profilage sous le menu « ... » en haut à droite de la section « Hosting »
  • La page Services connectés a maintenant une action pour lancer l’Explorateur Stockage Azure
  • Le modèle « ASP.NET Core Empty » fourni avec .NET 6 utilise le nouveau paradigme « minimal d’API » pour lequel nous avons commencé à ajouter la prise en charge
  • Azurite sera utilisé pour l’émulation locale du stockage Azure au lieu de l’ancien émulateur de stockage Azure qui n
  • Vous pouvez ajouter l’authentification à votre application ASP.NET Core à l’aide de la plateforme d’identités Microsoft via l’expérience de Services connectés dans Visual Studio.

Concepteur XAML WPF pour .NET Framework

  • Le Concepteur XAML WPF actuel pour .NET Framework est remplacé par un nouveau Concepteur XAML WPF pour .NET Framework, basé sur la même architecture que celle utilisée pour le Concepteur XAML WPF pour .NET (.NET Core). L’expérience Visual Studio se présente de la même façon, mais les fournisseurs de contrôle tiers doivent prendre en charge le nouveau modèle d’extensibilité car le modèle précédent basé sur .design.dll et Microsoft.Windows.Design.Extensibilityest déconseillé. Si vous avez déjà créé une extension .designtools.dllpour .NET (.NET Core), cette même extension fonctionnera pour le nouveau Concepteur XAML WPF pour .NET Framework. Reportez-vous au document de migration ci-dessous pour plus d’informations sur la migration vers le nouveau modèle d’extensibilité.

Recharge à chaud XAML

  • Modifications de Rechargement à chaud XAML - Modifications mineures apportées à la barre d’outils et aux paramètres dans l’application

Préversion en ligne de XAML

  • La préversion en direct de XAML est désormais disponible pour les développeurs WPF, UWP, WinUI et Xamarin.Forms exécutant leurs applications dans l’Émulateur Android ou en tant qu’application de bureau UWP. La préversion en direct capture une interface utilisateur des applications en cours d’exécution et l’amène dans une fenêtre ancrée dans Visual Studio. Cela facilite l’utilisation du Rechargement à chaud XAML pour modifier l’application tout en voyant ces modifications à l’intérieur de Visual Studio lui-même, sans avoir à basculer entre l’application en cours d’exécution et Visual Studio pour apporter des modifications de code XAML en direct.

Pour plus d’informations, cliquez sur le lien ci-dessus.

Exemples de données XAML

  • Les exemples de données au moment de la conception sont désormais ajoutés par défaut lors de la création de contrôles DataGrid, ListBox et ListView à partir de la boîte à outils dans les applications WPF. Pour désactiver ce comportement, décochez « Ajouter automatiquement des exemples de données lors de la création d’éléments » sous Outils -> Options -> Concepteur XAML ».
  • Pour en savoir plus sur l’exemple de données, consultez la documentation sur les exemples de données.

Amélioration de l’expérience de liaison de données XAML

  • Nous avons apporté une série d’améliorations pour rendre la liaison de données rapide et facile, comme l’accès rapide à la boîte de dialogue Liaison de données à partir de l’inspecteur de propriétés, la possibilité de définir la liaison à partir d’actions rapides, et la possibilité de choisir la propriété à lier à l’intérieur de la boîte de dialogue Liaison de données.

Pour plus d’informations, cliquez sur le lien ci-dessus.

Problèmes connus

Développement mobile en .NET

Outils Python

C++ IntelliSense

Résumé des nouveautés de cette mise en production de Visual Studio 2022 version 17.0.0

Débogage et diagnostics

  • Améliorations apportées à la boîte de dialogue Traiter
  • Nouvel affichage de liste du processus parent/enfant par le biais d’un bouton en bas de la fenêtre
    • La sélection de l’affichage doit être conservée.
    • La touche gauche dans le clavier accède au processus parent dans l’affichage parent/enfant.
    • Toutes les colonnes doivent être triables comme l’affichage d’origine.
  • La colonne Nouvelle ligne de commande est disponible dans les deux affichages.
  • Le nom du pool d’applications est affiché dans la « colonne Titre » pour les processus w3wp

![Attach to process ](media/17.0/17.0_P2_attach_to _process_3.png)

  • Ajout d’une assistance sur l’exception dans le bloc catch. Cela affiche l’assistance d’exception avec les informations d’exception pertinentes lorsqu’une étape gérée provoque la levée d’une exception et que l’étape se termine dans un bloc catch.
  • Un nouveau bouton « continuer » affiche l’assistance sur les exceptions « interceptées ».

Exception Handler Updates

  • Nous avons ajouté une option pour forcer l’exécution du clic pour exécuter le débogueur jusqu’à ce que la position du curseur sélectionnée soit atteinte tout en ignorant tous les points d’arrêt entre temps.
  • Vous pouvez l’exécuter en cliquant sur « Forcer l’exécution à cliquer » dans le menu contextuel de la ligne de code souhaitée.

Force Run to Cursor

  • Lorsque l’application est en mode débogage, vous pouvez également exécuter la commande « Forcer l’exécution à cliquer » en cliquant sur le glyphe vert qui apparaît en regard d’une ligne de code que la souris a survolé tout en maintenant la touche Maj enfoncée.

Force Run to Cursor Glyph

  • Analyse des diagnostics de vidage de mémoire
    • Nous avons amélioré le moteur de l’analyseur pour qu’il trouve plus de problèmes de synchronisation sur async dans le vidages de mémoire ASP.NET Core.
    • Trouvez quelles parties de votre code consomment le plus de ressources processeur en examinant les 5 principaux threads par CPU.
    • Passez en revue l’intégralité du tas managé pour connaître les signes de pression de mémoire dans la génération 0, 1, 2 et le tas d’objets volumineux.
    • Si vous disposez d’un vidage sur incident, vous pouvez rechercher la deuxième exception de chance et le thread qui a provoqué le blocage de votre application.
    • Vous avez du mal à formuler une hypothèse de diagnostic ? Lorsque la cause exacte d’un blocage n’est pas bien connue, vous pouvez utiliser l’analyseur d’exceptions pour rechercher et examiner rapidement toutes les exceptions sur le tas.
    • Pour ces moments ou l’analyse de la mémoire est importante, nous avons amélioré les heuristiques de l’analyseur de file d’attente Finalizer. Nous nous concentrons maintenant sur votre code et excluons les objets gérés par l»infrastructure .NET.

Point d’arrêt dépendant

Il s’agit d’un nouveau point d’arrêt qui permet à l’utilisateur de configurer un point d’arrêt pour qu’il soit activé uniquement si un autre point d’arrêt est atteint en premier. Lors du débogage, le débogueur Visual Studio interrompt uniquement l’application sur le point d’arrêt dépendant si le point d’arrêt requis est atteint. Vous pouvez convertir n’importe quel point d’arrêt en point d’arrêt dépendant en cochant la case « Activer uniquement lorsque le point d’arrêt suivant est atteint » dans la fenêtre paramètres et en sélectionnant le point d’arrêt requis dans la liste déroulante.

Dependent Breakpoint

Améliorations apportées aux énoncés de point d’arrêt

Nous avons ajouté un nouveau glyphe de point d’arrêt pour indiquer l’emplacement où l’utilisateur peut définir un point d’arrêt.

Breakpoint Glyph

Cliquez avec le bouton droit sur ce glyphe de point d’arrêt pour obtenir un nouveau menu contextuel avec des options. Il permet de créer rapidement des points d’arrêt avancés (point d’arrêt conditionnel, point de trace et point d’arrêt temporaire) en moins de clics.

Breakpoint Context Menu

Point d'arrêt temporaire

Il s’agit d’un nouveau point d’arrêt qui permet à l’utilisateur d’interrompre le code une seule fois. Lors du débogage, le débogueur Visual Studio interrompt le runtime de l’application une seule fois pour ce point d’arrêt et le supprime immédiatement après son accès. Vous pouvez convertir n’importe quel point d’arrêt en point d’arrêt temporaire en cochant la case « Supprimer le point d’arrêt une fois atteint » dans la fenêtre paramètres. Vous pouvez également utiliser le nouveau menu contextuel de clic droit à partir de l énoncé de point d’arrêt pour définir ce point d’arrêt.

Temporary Breakpoint

Glisser-déposer le point d’arrêt

Nous avons ajouté le mouvement de glisser-déposer pour les points d’arrêt. Vous pouvez maintenant conserver votre point d’arrêt et le déposer sur la ligne de code souhaitée pour le déplacer d’un emplacement vers un autre. Ceci fonctionne pour notre point d’arrêt avancé tant que les variables d’actions/condition se trouvent dans le contexte.

Drag and Drop Breakpoint

Nœud sources externes dans l’Explorateur de solutions

Nous avons ajouté un nouveau nœud « Sources externes » dans l’Explorateur de solutions. Il s’affiche actuellement uniquement lors du débogage et affiche les sources pour les modules managés avec des symboles chargés qui contiennent des informations sur le serveur source ou Source Link. Lors du débogage, tout fichier de symboles managés chargé (.pdb) qui contient des informations sur le serveur source apparaît sous ce nœud. Vous pouvez rechercher des fichiers comme n’importe quel autre dossier de l’Explorateur de solutions ou double-cliquer sur un élément pour télécharger le fichier à partir du serveur source et l’ouvrir dans l’éditeur VS. External Sources node in Solution explorer

Améliorations apportées à la boîte de dialogue Attacher au processus

Nous avons ajouté une nouvelle case d’actualisation automatique dans la boîte de dialogue Attacher au processus, qui, lors de la vérification, actualise automatiquement la liste des processus avec les processus disponibles. La nouvelle option « Sélectionner une fenêtre à partir du bureau » dans la boîte de dialogue Attacher au processus, permet à l’utilisateur de choisir n’importe quelle fenêtre en cours d’exécution à partir du bureau et de la joindre au processus associé pour le débogage.

Attach to process Dialog Improvements

Analyse des diagnostics de vidage de mémoire

La recherche des trames d’appel racine lorsqu’une exception Stack Overflow se produit peut être difficile et fastidieuse. Nos derniers analyseurs présentent une vue pratique de la pile des appels et suppriment les trames répétitives et bruyantes pour accélérer l’analyse du problème.

Personnalisation

Convertir des thèmes VS Code en thèmes Visual Studio

Nous avons créé un convertisseur de thème qui peut convertir des thèmes VS Code pour qu’ils fonctionnent dans Visual Studio. Essayez-le ici.

Nouveau pack de thèmes Visual Studio

Les thèmes VS Code par défaut sont désormais disponibles en tant que pack de thèmes Visual Studio. Jetez un coup d’œil au pack de thèmes ici.

Synchroniser le thème avec le système d’exploitation Windows

Nous avons ajouté la possibilité de synchroniser votre thème Visual Studio avec votre thème Windows afin que votre thème puisse s’ajuster en fonction de la quantité de lumière ambiante disponible. Pour l’activer, accédez aux Outils >Thème> à l’aide des paramètres système.

Onglets de couleur

Pour activer les onglets en couleur, accédez aux Outils > Options >Onglets et fenêtres, puis activez Coloriser les onglets.

Color tabs

Éditeur 

Navigation dans les sous-mots

Ctrl+Alt+Flèche gauche et Ctrl+Alt+Flèche droite permettent désormais de naviguer dans les sous-mots. Par exemple, la chaîne « HelloWorld » identifie « Hello » et « World » comme sous-mots. L’activation de la navigation dans les sous-mots dans Outils > Options > Éditeur de texte > Général entraînera l’interaction entre les commandes associées aux mots (par exemple, TransposeWord) et les sous-mots.

Enregistrement automatique

Sous Outils > Options > Environnement > Fonctionnalité d'évaluation , l’enregistrement automatique est désormais disponible. Si il est activé, lorsque l’application Visual Studio perd le focus (par exemple, une autre fenêtre obtient le focus), tous les documents sales sont enregistrés sur disque si possible. Si un fichier ne peut être enregistré, il reste sale jusqu’à ce que l’utilisateur l’enregistre explicitement (avec les commandes Enregistrer ou Enregistrer sous... ).

Expérience de copier/coller multi-caret

Nous avons amélioré l’expérience de copier/coller à plusieurs signes d’insertion. Auparavant, le collage de plusieurs lignes à plusieurs signes d’insertion entraînait la duplication de l’ensemble du Presse-papiers à chaque signe d’insertion. Maintenant, le collage de plusieurs lignes dans le même nombre de signes d’insertion insère chaque ligne à un signe d’insertion respectif. Pour utiliser plusieurs signes d’insertion (multi-caret), appuyez sur Alt+Shift clic de souris ou Alt+Shift +. ,puis appuyez sur Ctrl+Shift+ flèche pour développer les sélections. Ensuite, appuyez sur Ctrl+C pour copier le texte dans plusieurs sélections. Utilisez Alt+Shiftj+clic de souris pour créer plusieurs carets pour chaque ligne que vous souhaitez coller dans les emplacements souhaités. Enfin, appuyez sur Ctrl+V pour coller chaque ligne à sa propre position.

Multi-caret copy and paste

En outre, vous pouvez utiliser Alt+Shift+flèche vers le haut ou vers le bas ou Alt+Shift+déplacer la souris pour sélectionner avec plusieurs carets. Auparavant, ces mouvements créaient une sélection de zone. À présent, une sélection de zone se transforme en plusieurs signes d’insertion. Cette méthode est plus facile et plus rapide que d’avoir à cliquer à des emplacements précis pour insérer des signes d’insertion individuels. Si vous préférez continuer à utiliser la sélection de zone avec Alt+Shiftj+flèches de direction et Alt+Shift+déplacez la souris lors de l’expansion de la sélection multi caret, accédez à Outils > Options > Éditeur de texte > Avancé et sélectionnez Sélection de boîte .

Multi-caret box selection option

Extensibilité

Microsoft.VisualStudio.LanguageServer.Client introduit une nouvelle façon de personnaliser les notifications lorsqu’un client de langue ne parvient pas à initialiser.

La tâche d’initialisation sera maintenant suivie par le Centre d’état des tâches (TSC). Si la tâche d’initialisation échoue, les utilisateurs peuvent accéder au TSC pour obtenir plus d’informations sur ce qui a échoué. Les clients de langage pourront désormais personnaliser le message affiché à l’utilisateur en fournissant des informations sur ce que cet échec signifie et les possibles mesure correctives à entreprendre. Pour ce faire, nous introduisons un nouvel ensemble d’API dans l’interface ILanguageClient. Ces nouvelles API entraînent un changement cassant dans l’interface ILanguageClient. Les extensions de langage doivent donc référencer le nouveau package pour fonctionner dans Visual Studio 2022.

Voici les nouvelles API :

  1. Propriété ShowNotificationOnInitializeFailed : propriété booléenne qui détermine si le serveur de langage souhaite que nous affichions une bulle pour avertir l’utilisateur de l’échec comme suit :

ShowNotificationOnInitializeFailed in the Task Status Center

La suggestion consiste à définir cette propriété sur true uniquement si l’échec affecte considérablement l’expérience utilisateur du projet en cours.

  1. Méthode OnServerInitializedFailedAsync : cette méthode est appelée lorsque l’initialisation du client de langage échoue. Nous fournissons un objet LanguageClientInitializationInfoBase avec des informations sur la façon dont l’échec s’est produit afin que le client de langue puisse avertir l’utilisateur de l’échec à sa façon ou fournir un message personnalisé avec le contexte de l’échec. Si le message est fourni, il s’affiche dans la fenêtre Sortie de Visual Studio.

Language client initialization error in the Output Window

JavaScript/TypeScript

Il existe désormais une prise en charge d’un nouveau type de projet JavaScript/TypeScript qui vous permet de créer des projets Angular, React et Vue autonomes dans Visual Studio. Les projets seront créés à l’aide des outils d’infrastructure CLI que vous avez installés sur votre ordinateur local. Cela signifie également que la version du modèle est basée sur les versions CLI que vous avez sur votre ordinateur local.

Dans ces nouveaux projets, vous serez en mesure d’exécuter des tests unitaires et de les intégrer à ASP.NET projets d’API Core. Vous trouverez la documentation ici

  • Nous avons publié un nouveau type de projet JavaScript/TypeScript qui génère des projets JavaScript/TypeScript autonomes avec des outils supplémentaires. En savoir plus ici
  • L’interface graphique NPM est disponible pour vous permettre de télécharger les modules NPM de la même façon que vous téléchargez des packages Nuget dans les nouveaux projets JavaScript/TypeScript

NPM GUINPM GUI2

Expérience de Rechargement à chaud pour les développeurs .NET et C++

Plus tôt cette année , nous avons annoncé le Rechargement à chaud .NET, un projet ambitieux visant à apporter le Rechargement à chaud au plus grand nombre de développeurs .NET possible. Nous avons commencé ce parcours avec une première préversion disponible dans Visual Studio 2019 et nous avons promis beaucoup plus dans Visual Studio 2022 où l’expérience complète serait livrée. Aujourd’hui, je suis heureux de partager les détails de ce que nous avons terminé dans la version en disponibilité générale de Visual Studio 2022.

Pour tous les nouveaux utilisateurs du Rechargement à chaud, voici une introduction rapide. L’expérience Rechargement à chaud dans Visual Studio fonctionne pour les applications .NET managées et C++ natives. Quel que soit le type d’application sur lequel vous travaillez, l’intention du Rechargement à chaud est de vous économiser le plus de redémarrages d’application entre les modifications que possible, afin d’améliorer votre productivité en réduisant le temps que vous passez à attendre que les applications soient regénérées, redémarrent, accèdent à nouveau à l’emplacement précédent où vous étiez dans l’application elle-même, etc.

Pour ce faire, vous pouvez modifier les fichiers de code de votre application et appliquer immédiatement les modifications de code à l’application en cours d’exécution, ce qui porte le nom de « Rechargement à chaud . « Une fois vos modifications appliquées, réexécutez votre code en effectuant une action dans l’application elle-même (ou via une sorte de retardateur, etc.) et observez les modifications immédiatement. Aucune suspension de l’application via des points d’arrêt n’est requise!

Si vous souhaitez voir des démonstrations en direct de cette fonctionnalité, vous pouvez consulter l’une des vidéos suivantes :

Expérience utilisateur du Rechargement à chaud dans Visual Studio

L’expérience de Rechargement à chaud pour les développeurs .NET et C++ dans Visual Studio 2022 a également fait l’objet d’améliorations majeures. La barre d’outils dispose désormais de l’implémentation cible de notre bouton « Rechargement à chaud » avec une apparence améliorée et plus de fonctionnalités.

La première chose que vous remarquerez est le nouveau bouton de style déroulant avec une nouvelle icône. La commande est renommée de « appliquer les modifications de code » (des préversions anticipées) vers « Rechargement à chaud ».

Hot Reload User Experience in Visual Studio 2022

Le développement des boutons révèle un accès rapide aux fonctionnalités telles que le redémarrage des applications en cours d’exécution, une bascule d’opt-in pour le Rechargement à chaud lors de l’enregistrement et un accès rapide au nouveau panneau de paramètres.

Voici plus d’informations sur chacune des nouvelles fonctionnalités :

  • Redémarrer facilement les applications : vous pouvez désormais redémarrer facilement votre application en cours d’exécution si une modification grossière doit être appliquée via une reconstruction, que vous ayez démarré votre application à l’aide du débogueur ou sans le débogueur (NOUVEAU pour les applications .NET 6 !).
  • Rechargement à chaud sur l’enregistrement : dans les versions préliminaires antérieures, vous ne pouviez appliquer que des modifications de Rechargement à chaud lors de l’enregistrement dans les projets ASP.NET, vous deviez cliquer explicitement sur le bouton Rechargement à chaud à chaque fois. Dans la version finale, il est désormais possible de faire un Rechargement à chaud XAML à l’aide de la touche d’enregistrement pour n’importe quel type de projet. Cette option est activée, mais une fois activée, elle s’applique à toutes vos futures sessions Visual Studio, sauf si vous la désactivez.
  • Accès simple aux paramètres : nous avons ajouté un panneau d’options de Rechargement à chaud pour vous donner plus de contrôle lorsque le Rechargement à chaud est activé/désactivé. Vous pouvez accéder à ces paramètres dans Visual Studio « Options > .NET / C++ Rechargement à chaud » ou via le menu déroulant Boutons de Rechargement à chaud en cliquant sur Paramètres.

Nous avons également ajouté une boîte de dialogue de modification grossière améliorée, disponible lors de l’exécution de votre application .NET sans le débogueur.

New Rude Edit dialog for Hot Reload in Visual Studio 2022

Cette nouvelle boîte de dialogue présente plusieurs améliorations telles que :

  • Une option d’opt-in à l’échelle de la session Visual Studio pour reconstruire et appliquer des modifications sur chaque modification rude de Rechargement à chaud. Une fois cochée, elle s’applique à toutes les futures modifications grossières jusqu’à ce que Visual Studio soit redémarré
  • Une commande Régénérer et appliquer votre modifications de code peut être effectuée en un seul clic, au lieu de plusieurs étapes manuelles
  • Et un accès facile aux paramètres

La boîte de dialogue vous permet également de continuer les modifications si vous ne souhaitez pas effectuer d’action automatisée comme cela était possible précédemment.

Il existe une limitation connue, cette nouvelle boîte de dialogue ne sera pas offerte dans la version en disponibilité générale lors de l’utilisation du débogueur, mais le travail ce scénario deviendra possible dans une prochaine mise à jour.

Prise en charge des applications C++

Lorsque vous utilisez Visual Studio 2022 et démarrez votre application avec le débogueur, vous pouvez recharger à chaud une application C++ native lors de l’exécution sous le débogueur (F5) à l’aide du bouton «Rechargement à chaud». Le rechargement à chaud est également pris en charge pour les applications créées à l’aide des projets CMake et OpenFolder.

Cette expérience est alimentée par l’édition native et continue, pour les modifications prises en charge, consultez notre documentation.

Frameworks et scénarios d’application .NET pris en charge

Depuis que nous avons annoncé le Rechargement à chaud en mai 2021, une question très fréquente des développeurs .NET a été « Le Rechargement à chaud fonctionnera-t-il avec ma combinaison d’applications .NET framework/version ? ». Nous avons fait d’énormes progrès pour répondre OUI dans la plupart des situations, voici les points forts.

  • Lorsque vous utilisez Visual Studio 2022 et démarrez votre application avec le débogueur , l’expérience de Rechargement à chaud de base fonctionne avec la plupart des types d’applications et de framework .NET, notamment .NET Framework, .NET Core et .NET 5+ (pour C# et VB.NET le cas échéant). Les types d’applications pris en charge incluent les types de projets web (modifications de code-behind), de bureau, de mobiles, de cloud et autres. La règle de clé ici est que si vous utilisez le débogueur. souvenez-vous que le Rechargement à chaud est disponible pour vous et faites un essai !
  • Lorsque vous utilisez Visual Studio 2022 mais pas le débogueur (par exemple, en utilisant CTRL-F5 pour démarrer l’application), le Rechargement à chaud est désormais disponible même lorsque vous ciblez la plupart des types d’applications .NET 6. Cela signifie que les applications qui ne ciblent pas .NET 6 (.NET 5 ou version antérieure) ne prennent pas en charge le scénario « aucun débogueur » et doivent utiliser le débogueur pour obtenir la prise en charge du Rechargement à chaud.
  • Lorsque vous utilisez Visual Studio 2022 avec une application .NET 6, la plupart des scénarios sont pris en charge. Cela ne se limite pas à la nouvelle fonctionnalité « sans débogueur » mentionnée ci-dessus. Cela inclut également d’autres nouvelles fonctionnalités, telles que la prise en charge des projets Blazor de Rechargement à chaud et, plus généralement, la modification de fichiers Razor dans n’importe quelle application ASP.NET Core et le Rechargement à chaud CSS. L’utilisation de Visual Studio 2022 et d’applications qui ciblent .NET 6 ensemble vous donnera définitivement l’expérience de Rechargement à chaud la plus puissante et nous espérons que vous ferez l’essai.

Ci-dessous, nous allons développer ce que nous avons abordé plus haut et découvrir plus de détails.

Visual Studio 2022 avec une application .NET, lors de l’utilisation du débogueur

Lors de l’utilisation de Visual Studio 2022 et du démarrage de l’application avec le débogueur, le Rechargement à chaud fonctionne avec la plupart des frameworks d’applications, y compris les types d’applications classiques tels que Console, Windows Forms (WinForms), WPF, UWP, WinUI 3 (voir la remarque) et la plupart des types de projets web ASP.NET (pour les modifications code-behind), y compris ASP.NET MVC, l’API Web et les projets Web Forms encore plus anciens. Cette liste est seulement un exemple. Partout où vous avez .NET et que vous utilisez le débogueur managé Visual Studio, vous devez bénéficier d’une prise en charge de base du Rechargement à chaud.

Cela signifie que même des projets tels que Azure Functions fonctionnent très bien dans ce scénario. Nous vous encourageons à essayer votre combinaison et à nous faire savoir si vous rencontrez des problèmes.

*WinUI 3 utilise par défaut le débogage en mode mixte, qui ne prend pas en charge le Rechargement à chaud. Vous pouvez modifier cela dans les paramètres du projet en activant le débogueur managé, ce qui permet au Rechargement à chaud de fonctionner correctement.

Visual Studio 2022 avec une application .NET, sans utiliser le débogueur

Le Rechargement à chaud est disponible sans le débogueur lors du ciblage de la plupart des types d’applications .NET 6, y compris les types de projet tels que Console, WPF, Windows Forms (WinForms), ASP.NET Core MVC, l’API Web et Blazor. Nous savons que certains développeurs ont une bonne raison ou une préférence pour démarrer leurs applications sans le débogueur et nous espérons que cette fonctionnalité supplémentaire leur apportera un bénéfice sans impact sur le temps de démarrage.

Cette fonctionnalité ne concerne que .NET 6 et ces applications qui ne ciblent pas .NET 6 (.NET 5 ou versions antérieures) ne prendront pas en charge le scénario « aucun débogueur » et doivent utiliser le débogueur pour pouvoir utiliser la fonctionnalité de Rechargement à chaud.

Sachez également que tous les types de projet ne seront pas pris en charge pour le scénario « aucun débogueur » dans notre première version. Plus précisément :

  • Les applications UWP ne sont pas prises en charge pour le Rechargement à chaud sans le débogueur, c’est un choix de conception et il n’existe aucun plan actuel pour l’améliorer.
  • Les applications Xamarin.Forms ciblant iOS et Android ne prennent pas en charge le Rechargement à chaud .NET (que vous démarriez votre application avec ou sans le débogueur), mais continuent à prendre en charge le Rechargement à chaud XAML
  • Les applications .NET MAUI dans l’avenir immédiat ne prendront pas en charge le scénario de débogueur, mais prendront en charge le Rechargement à chaud .NET via le débogueur

Lorsque vous utilisez Visual Studio 2022 avec une application .NET 6, la plupart des scénarios sont pris en charge

Si vous utilisez Visual Studio 2022 et que vous travaillez sur des applications qui ciblent .NET 6, vous bénéficiez des avantages de l’expérience de Rechargement à chaud la plus soignée et la plus performante.

Points forts de ce qui est pris en charge :

  • Applications Blazor (Server et WebAssembly*)
  • Modification des fichiers Razor dans Blazor et les sites web ASP.NET Core standards
  • Rechargement à chaud CSS
  • Prise en charge du Rechargement à chaud lors de l’exécution d’applications sans le débogueur (comme décrit plus en détail précédemment)

Les développeurs ciblant .NET 6 continueront d’améliorer les futures mises à jour de Visual Studio 2022 et la bande de fonctionnalités .NET des versions majeures. Cela ne fait que commencer !

*Dans la version en disponibilité générale de Visual Studio 2022, la prise en charge du Rechargement à chaud pour Blazor WebAssembly lors de l’utilisation du débogueur Visual Studio n’est pas encore activée. Vous pouvez toujours obtenir le Rechargement à chaud si vous démarrez votre application via Visual Studio sans le débogueur, et nous travaillons à résoudre ce problème dans une prochaine mise à jour de Visual Studio.

Scénarios ASP.NET Core pris en charge

L’expérience de Rechargement à chaud de base est prise en charge dans de nombreux scénarios ASP.NET. La fonctionnalité la plus largement disponible est la possibilité de modifier le code-behind et d’autres fichiers de classe .NET pour la plupart des types d’applications web. Cette fonctionnalité fonctionne lors de l’utilisation du débogueur Visual Studio et est présente partout où l’option Modifier et Continuer était précédemment disponible.

Pour les développeurs ASP.NET Core qui ciblent .NET 6, il existe des fonctionnalités supplémentaires non disponibles pour les versions antérieures de .NET, notamment :

  • CSHTML : la modification d’un fichier CSHTML Razor prend en charge de nombreux types de modifications.
  • Actualisation du navigateur : la modification d’un fichier Razor actualise automatiquement les modifications dans votre navigateur web lors du débogage. Cette fonctionnalité était auparavant disponible uniquement lors du démarrage de l’application sans le débogueur.
  • Rechargement à chaud CSS : il est désormais possible de modifier les fichiers CSS pendant l’exécution de l’application, et les modifications seront appliquées immédiatement à l’application en cours d’exécution au fur et à mesure de la frappe.
  • Aucun débogueur : vous obtiendrez désormais la prise en charge du Rechargement à chaud lorsque vous utilisez Visual Studio pour démarrer votre application web sans le débogueur (CTRL-F5).

Remarque : lorsque vous travaillez sur une application Blazor Wasm et que vous utilisez Visual Studio 2022 (17.0), le Rechargement à chaud pour les pages Razor fonctionne uniquement lors du lancement d’applications sans débogueur. Nous allons ajouter la prise en charge du débogueur dans une prochaine mise à jour.

Modifications .NET prises en charge

L’expérience de Rechargement à chaud .NET est alimentée par le mécanisme Modifier et continuer et nous avons apporté des améliorations pour prendre en charge d’autres types de modifications qui vont au-delà de ce qui était initialement possible dans les versions précédentes. Les améliorations apportées incluent, entre autres :

  • Ajout, mise à jour ou suppression d’attributs personnalisés
  • Ajout ou mise à jour de structs d’enregistrement
  • Ajout ou mise à jour de directives #line
  • Modification d’expressions de commutateur
  • Modification de fichiers avec directives #line, y compris les modifications apportées à la directive elle-même
  • Modification des instructions de niveau supérieur
  • Modification du code qui utilise l’une des nouvelles fonctionnalités C# 10, telles que l’utilisation globale de directives, les espaces de noms délimités par les fichiers, les lambdas améliorés et les constructeurs de struct sans paramètre
  • Renommage des paramètres Lambda
  • Renommage des paramètres des méthodes existantes

Ces améliorations sont disponibles à la fois pour les expériences Rechargement à chaud et Modifier et continuer.

Mises à jour supplémentaires

  • Rechargement à chaud et Modifier et continuer avec plusieurs processus : il est désormais possible d’utiliser de manière fiable les expériences de Rechargement à chaud et de Modifier et continuer lorsqu’elles sont attachées à plusieurs processus. Auparavant, cette fonctionnalité n’était pas entièrement prise en charge et ne fonctionnait pas toujours correctement, cela a été corrigé.
  • Messages d’erreur/avertissement mis à jour : nous avons mis à jour de nombreux messages d’erreur/avertissement pour être plus clairs lorsque les messages s’appliquent à la fois à MetC et au Rechargement à chaud. Nous l’avons fait en rendant les messages plus génériques afin que la terminologie de Modifier et continuer ne soit pas utilisée pendant les opérations de Rechargement à chaud
  • Tests unitaires plus rapides des applications .NET : la technologie de Rechargement à chaud peut désormais être utilisée comme fonctionnalité expérimentale pour accélérer les tests unitaires lors du ciblage de .NET 6. Pour plus d’informations, consultez la section de test de ces notes de publication

Scénarios .NET non pris en charge

Même dans la version finale, il y aura toujours des scénarios non pris en charge que vous devez connaître :

  • Les applications Xamarin.Forms ne prennent pas en charge le rechargement à chaud .NET dans les scénarios iOS et Android. Vous obtiendrez un Rechargement à chaud lors du ciblage d’une application UWP. Ceci est lié à la conception, et nous n’envisageons pas d’apporter d’autres améliorations. (Remarque : le Rechargement à chaud XAML continuera d’être disponible et pris en charge pour les clients Xamarin.Forms sur le dernier kit SDK.)
  • Les applications .NET MAUI ne sont pas prises en charge dans cette version. Pour utiliser .NET MAUI et le Rechargement à chaud, consultez les notes de publication de Visual Studio 2022 Mise à jour 1 Préversion 1 pour plus d’informations.
  • Les applications créées à l’aide de F# ou celles ciblant .NET Native ne prennent pas en charge le Rechargement à chaud.

Productivité .NET

La refactorisation des espaces de noms de synchronisation est désormais disponible dans le menu (clic droit) d’un projet ou d’un dossier dans l’Explorateur de solutions, ce qui vous permet de synchroniser facilement les espaces de noms pour qu’ils correspondent à votre structure de dossiers.

Sync namespaces from Solution Explorer

La configuration de l’analyse du code en arrière-plan est désormais disponible dans le menu Explorateur de solutions (clic droit). Cliquez avec le bouton droit sur le nœud de solution dans l’Explorateur de solutions, puis sélectionnez Analyser et nettoyer le code. Ensuite, sélectionnez Définir l’étendue d’analyse pour configurer l’étendue de l’analyse du code en arrière-plan.

  • Il existe maintenant une refactorisation qui introduit un paramètre qui déplace une expression d’une implémentation de méthode vers ses appelants en ajoutant un nouveau paramètre. Placez votre curseur sur la ligne contenant l’expression ou mettez en surbrillance l’expression. Appuyez sur (Ctrl+.) pour déclencher le menu Actions rapides et refactorisations. Sélectionnez Introduire un paramètre pour {0} ou Introduire un paramètre pour toutes les occurrences de {0}. Les deux options auront trois options de menu volant pour soit (1) insérer l’expression mise à jour sur tous les sites d’appel, (2) extraire et créer une nouvelle méthode qui retourne l’expression et ajoute un argument sur les sites d’appel, ou (3) créer une surcharge de la méthode qui contient l’expression et appelle la méthode d’origine.

Introduce parameter from Quick Actions menu

  • Il existe une nouvelle commande appelée Suivre la source de valeur qui vous permet d’effectuer une analyse de flux de données pour déterminer comment certaines valeurs peuvent avoir passé à un point donné et où elles peuvent être passées. Cliquez avec le bouton droit sur n’importe quel membre donné, puis sélectionnez Suivre la source de valeur dans le menu contextuel.

Track value source in right click menu

  • La fenêtre Suivi des valeurs s’ouvre pour vous permettre d’analyser les résultats :

Track Value Source Window

  • Nous avons ajouté une option pour souligner les variables réaffectées. Cette option est désactivée par défaut. Vous devrez donc l’activer dans Outils > Options > Éditeur de texte > C# ou Basique > Avancé, puis sélectionner Souligner les variables réaffectées.

Underline reassigned variables in Editor

  • Nous avons ajouté une option de recherche dans la boîte de dialogue Générer les remplacements, ce qui vous permet de rechercher et de sélectionner rapidement les membres à remplacer.

Search in Generate Overrides Dialog

  • Les informations rapides pour les balises de code >XML< conservent désormais des espaces blancs et des blocs CDATA. Pointez le curseur sur l’élément. Info express affiche alors les styles pris en charge à partir des commentaires XML au-dessus de votre code.

Quick Info for XML preserves whitespace

  • La fenêtre Rechercher toutes les références regroupe désormais des projets multi-cibles qui contribuent à réduire le bruit visuel.

Find All Reference Groups Multi-Targeted Projects

  • Il existe maintenant une refactorisation qui supprime les types répétitifs dans Visual Basic.
  • Accédez à Implémentation n’accédera plus aux membres avec des déclarations abstraites qui sont également substituées.

Outils de langage C#

Dans C# 8.0, nous avons introduit les types de références Nullables, qui vous permettent de déclarer si une valeur null est attendue. Pour utiliser les types de références Nullables, vous ajoutez l’élément <Nullable>enable</Nullable> (activer) à votre fichier projet ou vous ajoutez #nullable enable pragma à chaque fichier source de votre projet. Pour simplifier ce processus, nous incluons désormais automatiquement <Nullable>enable</Nullable> pour les nouveaux projets .NET.

Dans C# 10.0, nous introduisons l’espace de noms inclus dans l’étendue de fichier, qui vous permet de ne pas imbriquer les définitions de classe dans un espace de noms. Nous disposons à présent d’une refactorisation pour convertir un espace de noms en espace de noms inclus dans l’étendue de fichier. Pour utiliser l’espace de noms délimité au fichier, vous devez d’abord ajouter l’élément <LangVersion>preview</LangVersion> à votre fichier projet. Ensuite, placez votre curseur sur un espace de noms. Appuyez sur (Ctrl+.+.) pour déclencher le menu Actions rapides et refactorisations. Sélectionnez Convertir en namespace inclus dans l’étendue de fichier.

File-scoped namespace refactoring

Il existe à présent une refactorisation qui préfère is not null à is object en cas d’application à des types valeur. Pour utiliser cette nouvelle refactorisation, placez votre curseur sur une vérification de type. Appuyez sur (Ctrl+.+.) pour déclencher le menu Actions rapides et refactorisations. Sélectionnez Préférer la vérification null à la vérification de type.

Naviguer vers les sources décompilées

Accédez à Sources décompilées par défaut, ce qui vous permet d’accéder aux déclarations des types de bibliothèque. Accédez à Sources décompilées lorsque vous appelez Go to Definition sur un symbole de bibliothèque dans votre code source et sur des sources décompilées.

Améliorations de l'éditeur

Les commentaires XML génèrent désormais automatiquement une balise <exception> au sein d’une balise <summary>, ce qui vous permet d’ajouter une description quand une méthode lève explicitement des exceptions.

Dans Visual Studio 2019, nous avons publié la marge d’héritage qui ajoute des icônes aux marges représentant les implémentations et les remplacements de votre code. Cliquer sur les icônes de marge d’héritage affiche les options d’héritage que vous pouvez sélectionner pour y accéder. Dans cette version, la marge d’héritage est activée par défaut. Pour désactiver la marge d’héritage, accédez à Outils >Options >Éditeur de texte>C# ou Basique >Avancé et désélectionnez Activer la marge d’héritage.

Inheritance Margin

Langages de programmation

C# 10

  • Emregistrer les structs et with expressions sur les structs (record struct Point(int X, int Y);, var newPoint = point with { X = 100 };).
  • Directives global using : les directives global using évitent de répéter les mêmes directives using dans de nombreux fichiers de votre programme
  • Amélioration de l’affectation définitive : l’affectation définitive et l’analyse de la nullabilité gèrent mieux les modèles courants tels que dictionary?.TryGetValue(key, out value) == true
  • Chaînes interpolées constantes : les chaînes interpolées composées de constantes sont elles-mêmes des constantes.
  • Modèles de propriétés étendus : les modèles de propriété autorisent l’accès aux membres imbriqués (if (e is MethodCallExpression { Method.Name: "MethodName" })).
  • Enregistrement avec remplacement ToString sealed : un enregistrement peut hériter d’un enregistrement de base avec un remplacement ToString sealed.
  • Générateurs de sources incrémentiels : amélioration de l’expérience de génération de source dans les projets volumineux en décomposant le pipeline de génération de source et en mettant en cache les résultats intermédiaires.
  • Déconstructions mixtes : les affectations de déconstruction et les déclarations de déconstruction peuvent être fusionnées ((existingLocal, var declaredLocal) = expression).
  • AsyncMethodBuilder au niveau de la méthode : AsyncMethodBuilder utilisé pour compiler une méthode async peut être remplacé localement.
  • Directive d’étendue #line : autoriser les générateurs de sources comme le contrôle précis Razor du mappage de ligne avec des directives #line qui spécifient l’étendue de destination (#line (startLine, startChar) - (endLine, endChar) charOffset "fileName").
  • Améliorations des expressions lambda : les attributs et les types de retour sont autorisés sur les expressions lambda. Les expressions lambda et les groupes de méthodes ont un type délégué naturel (var f = short () => 1;).
  • Gestionnaires de chaînes interpolées : les types de gestionnaires de chaînes interpolées permettent une mise en forme efficace des chaînes interpolées dans les affectations et les appels.
  • Espaces de noms limités aux fichiers : les fichiers avec un espace de noms unique n’ont pas besoin d’accolades ou de retrait supplémentaires (namespace X.Y.Z;).
  • Constructeurs de struct sans paramètre : prise en charge des constructeurs sans paramètre et des initialiseurs de champs d’instance pour les types de struct.
  • CallerArgumentExpression : cet attribut permet de capturer les expressions transmises à une méthode sous forme de chaînes.

Pour plus d’informations, consultez l’état des fonctionnalités de langage C# et les changements cassants.

Éditeur Razor (ASP.NET Core)

  • Le Rechargement à chaud est désormais prise en charge dans les fichiers Razor.

Reload Support in Razor Files

  • Nous avons apporté des améliorations significatives aux performances de l’éditeur Razor.

  • Nous avons amélioré la mise en forme et la mise en retrait, ce qui le rend plus fiable et beaucoup plus rapide.

  • Nous avons ajouté de nouvelles couleurs Razor ! Vous pouvez personnaliser ces couleurs dans Outils > Options > Environnement > Polices et couleurs.

  • TagHelpers est désormais colorisé et prend en charge la classification dans les infos rapides et les info-bulles d’achèvement IntelliSense.

TagHelpers Classification Support

  • Nous avons amélioré la mise en surbrillance de la branche d’angle et la navigation pour les constructions Razor.

  • Les commentaires ont désormais la saisie semi-automatique, la mise en retrait intelligente, l’inclusion automatique des continuations de commentaires et le blocage de la navigation dans les commentaires.

Tests à distance (préversion expérimentale)

Préversion expérimentale très précoce de l’activation des tests sur des environnements distants tels que des conteneurs Linux, WSL et via des connexions SSH! Bien qu’il s’agit d’une capacité très précieuse, nous vous demandons un peu de patience, car cette fonctionnalité est toujours dans un état expérimental très précoce, car nous collectons des commentaires. Vous pourriez ne pas trouver la fluidité que vous obtenez normalement, car vous pouvez imaginer qu’il existe un grand nombre de scénarios dans la façon dont nous pouvons communiquer et gérer un environnement connecté à partir de Visual Studio. Prérequis nécessaires pour l’utilisation de cette version expérimentale des tests à distance :

  • L’utilisateur doit installer les dépendances nécessaires dans votre environnement cible. Cela signifie que si vous souhaitez que vos tests ciblant .NET 3.1 s’exécutent dans un conteneur Linux, vous devez vous assurer que le conteneur a .NET 3.1 installé via votre fichier Dockerfile. À l’avenir, nous aimerions créer une expérience d’installation qui permette l’acquisition fluide de toutes vos dépendances de test, mais pour le moment, nous gardons la majeure partie de l’approvisionnement de l’environnement aux soins de l’utilisateur.
  • Prévoyez le monitoring de l’état de la connexion à l’environnement distant à l’aide du panneau de test Output->. Par exemple, si le conteneur a été arrêté, un message s’affiche dans le volet de test Ouutput->. Nous ne détectons pas forcément tous les scénarios. Vous devez donc vérifier votre sortie si la connexion semble avoir été perdue. En particulier, si le volet Sortie n’est pas défini sur « Test », vous risquez de ne pas voir immédiatement le message. Nous expérimentons toujours avec le meilleur modèle de notification lorsque les connexions sont perdues, de sorte que les commentaires sont plus que bienvenus ! Si la connexion est perdue, utilisez la liste déroulante de l’environnement dans l’Explorateur de tests pour rétablir la connexion de votre environnement local, puis sélectionnez à nouveau l’environnement distant pour réinitialiser la connexion.
  • La préversion expérimentale est limitée aux tests .NET uniquement pour l’instant. Nous sommes conscients de l’intérêt de la prise en charge des expériences de test à distance C++ et nous espérons fournir cela également.

Comment puis-je tester à distance ?

  • Les documents officiels arriveront après la période expérimentale. Pour l’instant, voici ce dont vous avez besoin pour commencer à tester.
  • Les environnements sont spécifiés à l’aide de testenvironments.json à la racine de votre solution. La structure de fichiers json suit le schéma ci-dessous :
{
    "version": "1", // value must be 1
    "environments": [
        { "name": "<unique name>", ... },
        ...
    ]
}
  • Connexions de conteneur locales
    • Pour vous connecter à un conteneur s’exécutant localement, vous devez disposer de Docker Desktop sur votre machine locale. Vous pouvez éventuellement activer l’intégration WSL2 pour améliorer les performances.
    • Pour Dockerfile, vous pouvez spécifier l’environnement dans testEnvironments.json à la racine de votre solution :
          {
          "name": "<name>",
          "localRoot": "<path to local environment>", // optional
          "type": "docker",
          "dockerImage": "<docker image tag>",
          }
      
      Par exemple :
      {
      "version": "1",
      "environments": [
          {
          "name": "linux dotnet-core-sdk-3.1",
          "type": "docker",
          "dockerImage": "testenv"
          }
      ]
      }
      
    • Voici un exemple de fichier Dockerfile pour l’exécution de tests ciblant .NET 3.1.
      FROM mcr.microsoft.com/dotnet/core/sdk:3.1
      
    • Vous pouvez créer un conteneur à l’aide de la commande suivante (en incluant le « . » à la fin) : docker build -t <docker image name> -f <path to Dockerfile> .
  • Connexions WSL2 locales
    • Vous devez activer l’intégration WSL2 sur votre ordinateur local.
    • L’environnement peut être spécifié dans testEnvironments.jsondans la racine de votre solution en suivant ce schéma :
      {
      "version": "1",
      "environments": [
          {
          "name": "WSL-Ubuntu",
          "type": "wsl",
          "wslDistribution": "Ubuntu"
          }
      ]
      }
      
  • Connexions SSH
    • Vous pouvez ajouter ou supprimer des connexions SSH dans Outils >Options > Multiplateforme > Gestionnaire des connexions. Le fait de sélectionner « Ajouter » vous permet d’entrer le nom d’hôte, le port et les informations d’identification dont vous avez besoin.
    • Vous pouvez spécifier l’environnement dans testEnvironments.json à la racine de votre solution :
      {
      "version": "1",
      "environments": [
          {
          "name": "ssh-remote",
          "type": "ssh",
          "remoteUri": "ssh://user@hostname:22"
          }
      ]
      }
      
  • L’environnement actif est sélectionné via une liste déroulante dans la barre d’outils de l’Explorateur de tests. Pour le moment, un seul environnement de test peut être actif à la fois.

Remote testing environment drop down in Test Explorer

  • Une fois qu’un environnement est sélectionné, les tests sont découverts et exécutés dans le nouvel environnement.

Tests are discovered and executed in remote environments

  • Vous pouvez maintenant exécuter et déboguer vos tests à l’intérieur de l’environnement distant !

    View test results from remote environment in the test explorer

  • L’Explorateur de tests peut vous inviter à installer certaines conditions préalables manquantes et tenter de les installer, mais en fin de compte, nous laissons la majeure partie de l’approvisionnement de l’environnement distant aux soins de l’utilisateur.

Rechargement à chaud dans l’Explorateur de tests [expérimental] : il est désormais possible d’essayer une nouvelle fonctionnalité expérimentale qui accélère votre expérience de test à l’aide de la technologie de Rechargement à chaud en arrière-plan. Cela signifie qu’après votre première exécution de test où une build complète est toujours requise, vous pouvez ensuite apporter des modifications mineures, exécuter vos tests et toutes ces mises à jour seront répercutées sans avoir à effectuer une build complète. Pour commencer et en savoir plus, consultez les détails ci-dessous :

Hot reload for the Test Explorer in Visual Studio enables you to run tests without requiring a build between minor edits

  • Cette expérience n’est disponible que pour les projets ciblant .NET 6 et vous devez vous inscrire en accédant à Outils > Options > Test!

Screenshot of Visual Studio showing enable hot reload option in Tools > Options > Test.

  • Lorsque cette option est activée, vos tests sont mis à jour même avec des modifications non enregistrées dans l’éditeur. Nous ne créons pas de fichiers binaires sur votre disque dans votre dossier de classe. Cela signifie que vous pouvez voir des différences entre ce qui se trouve sur le disque et vos résultats de test dans Visual Studio. Pour résoudre ces problèmes et avant d’archiver, veillez à effectuer une build complète (Ctrl+Maj+B). Toute génération explicite remplace les résultats des tests de Rechargement à chaud par les résultats des tests de build complète standard.

  • Il existe certains types de modifications que le Rechargement à chaud ne peut pas récupérer et, dans ce cas, il revient par défaut à l’ancien comportement d’effectuer une build complète. Notez également que seules les modifications apportées à Visual Studio sont suivies, des cas opaques dans l’éditeur, comme la modification des cibles, peuvent requérir par défaut une build complète.

  • Certaines modifications importantes (comme le renommage des noms de méthode 1000+) peuvent prendre plus de temps pour recharger à chaud que simplement la recréation. Dans ces cas, un message est imprimé dans la sortie invitant les utilisateurs à effectuer une reconstruction complète plutôt qu’à attendre le Rechargement à chaud.

  • Le rapport des traces de procédure n’est pas encore disponible avec le Rechargement à chaud dans l’Explorateur de tests. Si vous avez besoin d’utiliser le rapport des appels de procédure, nous vous conseillons d’effectuer une build complète.

Outils de test

  • Afficher dans l’Explorateur de tests (Ctrl+E,S): afficher dans l’Explorateur de tests donne la possibilité de passer de l’emplacement où votre curseur se trouve dans une méthode de test dans l’éditeur vers l’emplacement où se trouve le test dans l’Explorateur de tests. Cela peut vous rappeler une fonctionnalité similaire appelée Synchronisation avec le document actif qui conserve le document que vous travaillez actuellement en surbrillance dans l’Explorateur de solutions. C’était l’un des principaux éléments votés par la communauté des Développeurs, donc merci à tous ceux qui ont voté et nous ont aidé à prioriser cette fonctionnalité ! Afficher dans l’Explorateur de tests est également disponible à partir du menu contextuel de l’éditeur, du glyphe de test CodeLens et du clic droit dans l’Explorateur de solutions.

    Show in Test Explorer from right-click menuShow in Test Explorer from CodeLens

  • Mise à jour du test de charge web et du test codé de l ’interface utilisateur : l’enregistreur de test de charge web est disponible dans Visual Studio 2022. L’enregistreur de test codé de l’interface utilisateur ne sera pas inclus dans Visual Studio 2022. Vous pourrez toujours exécuter des tests codés de l’interface utilisateur et créer de nouveaux tests en écrivant du code dans Visual Studio 2022, mais l’enregistreur s’appuie sur des dépendances 32 bits qui ne sont pas réalisables pour le port. Vous pouvez toujours installer Visual Studio 2019 côte à côte pour utiliser l’enregistreur codé de l’interface utilisateur. Pour mémoire, le test de charge web et le test codé de l’interface utilisateur ont été déconseillés en 2019 et nous prévoyons de les supprimer du produit lorsque nous pourrons réduire l’impact sur les utilisateurs. Nous encourageons vivement les utilisateurs intéressés par les tests d’interface utilisateur web à adopter le nouveau framework de test web multiplateforme et open source Playwright. Outre la prise en charge de tous les principaux navigateurs et une meilleure gestion du code asynchrone, Playwright dispose également de fonctionnalités d’enregistrement de test intégrées.

Emplacements approuvés

  • Dans le cadre de la réorganisation des « Paramètres d’approbation », nous avons supprimé la vérification « Marque du web » et ajouté une boîte de dialogue d’avertissement qui s’affiche lors de la tentative d’ouverture du code (par exemple, des fichiers, des projets ou des dossiers) qui n’a pas été précédemment approuvé
  • Le code peut maintenant être approuvé à l’emplacement du dossier actif ou du dossier parent
  • Les projets créés par l’utilisateur sont automatiquement ajoutés à la liste des emplacements approuvés de l’utilisateur
  • Vous pouvez ignorer les vérifications d’approbation pour les emplacements temporaires créés par la fonctionnalité Visual Studio

Avant l’ouverture du contenu (par exemple, solution, projet, fichier ou dossier) à l’intérieur de l’IDE, nous allons vérifier si l’emplacement du dossier a été précédemment approuvé.

Si du code non approuvé est détecté, nous allons afficher une boîte de dialogue d’avertissement vous alertant des implications de sécurité et vous demandant d’approuver le code avant l’opération IDE normale.

Remarque : bien que cette fonctionnalité soit actuellement désactivée par défaut, elle peut être activée par le biais de Options > Paramètres d’approbation >Demander une décision d’approbation avant d’ouvrir le contenu

Mises à jour des nœuds sources externes

Le nœud Sources externes dans l’Explorateur de solutions dispose désormais également de la prise en charge de C++. En outre, nous avons ajouté un nouveau sous-nœud qui vous donne tous les modules avec des symboles qui ne sont pas encore chargés.

External Sources node in Solution explorer supports C++

Vous pouvez également utiliser le menu contextuel de clic droit pour charger les symboles directement à partir de l’Explorateur de solutions afin que les modules puissent apparaître dans les nœuds sources externes. Les fichiers du nœud Sources externes sont également triés par ordre alphabétique maintenant.

External Sources menu

Mise à jour et actualisation de l’iconographie

  • Dans le cadre de notre objectif d’actualiser l’interface utilisateur de Visual Studio 2022, vous trouverez des icônes nouvellement actualisées et mises à jour dans l’IDE pour plus de cohérence, de lisibilité et de familiarité.

Examples of new icons with dark and light backgrounds

Rechargement à chaud XAML

Nous avons mis à jour les paramètres de Rechargement à chaud XAML et les barres d’outils dans l’application pour plus de clarté indiquant que les paramètres et les expériences d’application sont liés au Rechargement à chaud XAML et non au Rechargement à chaud .NET.

Updated in-app toolbar in XAML apps

Nous avons également simplifié le volet des paramètres pour mieux organiser les options courantes ensemble.

Updated XAML Settings options panel

Aperçu instantané XAML

La préversion en direct de XAML est désormais disponible pour les développeurs WPF, UWP, WinUI et Xamarin.Forms exécutant leurs applications dans l’Émulateur Android ou en tant qu’application de bureau UWP. La préversion en direct capture une interface utilisateur des applications en cours d’exécution et l’amène dans une fenêtre ancrée dans Visual Studio. Cela facilite l’utilisation du Rechargement à chaud XAML pour modifier l’application tout en voyant ces modifications à l’intérieur de Visual Studio lui-même, sans avoir à basculer entre l’application en cours d’exécution et Visual Studio pour apporter des modifications de code XAML en direct.

Live Preview of XAML Desktop Apps UI

Pour commencer :

  • Démarrer une application prise en charge à l’aide du débogueur
  • Activez la préversion en direct de XAML, soit par le biais d’une recherche rapide en tapant « XAML Live Preview » ou en utilisant les barres d’outils dans l’application « Afficher dans XAML Live Preview »

Une fois l’expérience démarrée, les fonctionnalités suivantes seront disponibles :

  • Défilement et zoom : vous pouvez effectuer un panoramique et effectuer un zoom sur la fenêtre qui capture l’interface utilisateur de vos applications, ce qui vous permet de l’adapter à vos besoins pour afficher l’application complète ou uniquement les parties que vous essayez de modifier. Le mouvement panoramique et le défilement fonctionnent avec le pavé tactile (deux défilements de doigts), la roulette de défilement de la souris ou ctrl + clic pour faire glisser le contenu autour.
  • Règles : vous pouvez ajouter une ou plusieurs règles horizontales/verticales pour superposer à votre application en cours d’exécution. Ces lignes peuvent ensuite être déplacées à l’aide de la souris ou du clavier. Lorsque vous déplacez des règles avec le clavier, utilisez les touches de direction pour le positionnement précis et ctrl+flèches pour le positionnement rapide. Vous pouvez également supprimer des règles en les sélectionnant (en cliquant ) et en appuyant sur la touche Supprimer.
  • Sélection d’éléments et info-bulles : Avec la sélection d’éléments, vous pouvez sélectionner l’élément XAML que vous souhaitez modifier à l’aide de la même fonctionnalité que celle que vous utilisez dans l’arborescence visuelle dynamique ou la barre d’outils dans l’application. Une fois que vous avez sélectionné, vous pouvez également activer la nouvelle fonctionnalité « Astuces » pour obtenir des informations supplémentaires sur l’élément sélectionné, tels que les polices, les couleurs, les informations de marge/remplissage, etc. Lorsque vous utilisez la Sélection de l’élément, envisagez d’activer l’élément sélectionné en préversion , soit via le bouton de barre d’outils Arborescence de visuels en direct ou Débogage > Options > Paramètres de Rechargement à chaud, pour accéder au code XAML source.
  • Basculement de fenêtres : vous pouvez contrôler quelles fenêtres d’application sont capturées.

Amélioration de l’expérience de liaison XAML

  • Icônes de liaison de données améliorées dans l’inspecteur de propriétés. Vous pouvez maintenant accéder rapidement à la boîte de dialogue Liaison de données en cliquant sur une icône « cylindre » en regard d’une propriété, et vous pouvez effacer la liaison en cliquant sur l’icône « x ».

Binding icons in Property Inspector

  • Ajout de l’onglet Liaison dans Actions rapides pour créer des liaisons en quelques clics à partir du concepteur XAML.

Binding tab in Quick Actions

  • Ajout de la zone de liste déroulante Propriété cible à la boîte de dialogue Liaison de données pour sélectionner la propriété en déplacement.

Updated Data Binding Dialog with Target Property combo box

Principaux problèmes soulevés par la Visual Studio Developer Community

Consultez la liste complète des correctifs de Visual Studio Developer Community dans cette version.


Problèmes connus

Consultez tous les problèmes ouverts et solutions de contournement disponibles dans Visual Studio 2022 en suivant le lien ci-dessous.

Commentaires et suggestions

Nous sommes à votre écoute ! Vous pouvez signaler un problème ou suggérer une fonctionnalitéFeedback Icon en utilisant l’icône Envoyer des commentaires dans l’angle supérieur droit du programme d’installation ou de l’IDE Visual Studio, ou en sélectionnant Aide >Envoyer des commentaires. Vous pouvez suivre vos problèmes à l’aide de Visual Studio Developer Community, où vous ajoutez des commentaires ou cherchez des solutions. Vous pouvez également obtenir une aide gratuite pour l’installation via notre support Live Chat.


Blogs

Tirez parti des insights et des recommandations disponibles sur le site Developer Tools Blogs pour rester informé de toutes les nouvelles versions Release et des publications contenant des informations approfondies sur un large éventail de fonctionnalités.


Haut de page