Rider 2022.3 prend en charge le SDK .NET 7, ce qui inclut les dernières fonctionnalités de C# 11. Cette version améliore significativement les performances, notamment le temps de démarrage et d'exécution de Rider sous WSL 2 (sous-système Windows pour Linux 2) lors du développement à distance. Nous avons remanié plusieurs aspects de l'expérience/interface utilisateur, comme par exemple la possibilité d'ancrer les fenêtres d'outils dans les configurations à plusieurs écrans. Pour finir, cette version renforce l'intégration avec les éditeurs Unity et Unreal.
Nous avons effectué plusieurs modifications afin d'augmenter la vitesse de démarrage de Rider et de réduire le temps d'ouverture d'une solution :
Apprenez-en plus sur les améliorations de performance de Rider ici.
Rider prend désormais en charge le sous-système Windows pour Linux 2 (WSL 2) via la fonctionnalité de développement à distance de l'IDE. Vous pouvez donc utiliser Rider sur une instance WSL 2 pour parcourir vos solutions et sources, ainsi que pour créer, déboguer et exécuter des applications comme si elles étaient stockées localement.
Il est possible de lancer un processus de configuration simple directement depuis l'écran de bienvenue de Rider. L'interface utilisateur est fournie par la fonctionnalité de développement à distance, de sorte que WSLg n'est pas nécessaire et qu; un client RemoteDev local est automatiquement installé. Pour plus d'informations, consultez la documentation sur le développement à distance.
La très attendue possibilité d'ancrer les fenêtres d'outils aux onglets flottants de l'éditeur est finalement disponible ! Pour faciliter l'organisation de votre espace de travail et l'interaction avec Rider sur plusieurs moniteurs, nous avons implémenté une option permettant de glisser les fenêtres d'outils hors de la fenêtre principale et de les ancrer aux onglets flottants de l'éditeur.
Nous avons optimisé l'algorithme derrière la liste de résultats de Search Everywhere afin d'améliorer la prévisibilité de son comportement et la précision de la sélection des éléments recherchés. Désormais, lorsque vous commencez à saisir votre requête, l'IDE fige les premiers résultats de recherche qui apparaissent et ne les réorganise pas lorsque d'autres options sont trouvées (comme cela était le cas dans les versions précédentes).
Nous avons introduit une nouvelle boîte de dialogue Attach to process pour améliorer l'expérience utilisateur, notamment pour attacher un processus via SSH. Nos objectifs sont de vous aider à trouver et sélectionner le bon processus plus rapidement et de permettre à l'IDE de mémoriser le débogueur choisi.
Nous avons amélioré l'expérience d'édition en remaniant le comportement de l'action coller (⌘V / Ctrl+V). Désormais, lorsque vous copiez (⌘C / Ctrl+C) ou coupez (⌘X / Ctrl+X) une ligne sans aucun code sélectionné, l'action coller ajoutera le contenu du presse-papiers au-dessus de la ligne actuelle, et non au niveau de votre curseur comme dans les versions précédentes.
Nous proposons désormais une action Edit | Paste Special: JSON as Classes
qui vous permet de « coller intelligemment » des objets. Par exemple, si vous devez copier du code JSON et le coller en utilisant cette action, cela générera automatiquement des classes C# basées sur ce code JSON.
Nous vous invitons à activer la nouvelle interface utilisateur pour les IDE basés sur IntelliJ dans Preferences/Settings | Appearance & Behavior | New UI Preview
. Cette nouvelle interface s'inscrit dans une approche continue de réduction de la complexité et des distractions pour vous aider à vous concentrer sur votre travail.
Nous poursuivons également l'implémentation de petites optimisations de l'expérience et de l'interface utilisateur de Rider, pour le rendre à la fois plus pertinent et pratique :
File | New
du menu principal a été renommée File | New Solution
, car cela correspond mieux à l'action concernée. Rider 2022.3 prend officiellement en charge le SDK .NET 7, notamment :
ref
et le mot-clé scoped
. Nous avons ajouté la prise en charge basique des littéraux UTF-8
. L'analyse de code suggère maintenant d'utiliser le suffixe u8
pour un littéral au lieu de la méthode System.Text.Encoding.UTF8.GetBytes()
ou un tableau d'octets comportant des symboles UTF8
corrects. En outre, un ensemble d'avertissements et d'erreurs de compilateur a été ajouté pour les littéraux UTF-8.
La prise en charge basique des types de fichiers locaux inclut la compréhension de la nouvelle syntaxe, le modificateur d'accessibilité file
pour les types, ainsi que des avertissements et des erreurs de compilateur avec des suggestions de correctifs rapides, tels que Move class to outer scope lorsque le modificateur file
est spécifié pour une classe imbriquée. Vous trouverez aussi une action contextuelle très pratique pour convertir un type général en type de fichier.
Rider peut désormais convertir les chaînes ordinaires et textuelles en chaînes brutes. Cela signifie également que de nombreuses fonctionnalités existantes pour les chaînes sont désormais disponibles pour les chaînes brutes.
Dans cette version, nous avons introduit des suggestions pour utiliser la nouvelle syntaxe de schéma de liste de C# 11 (au lieu des vérifications classiques de longueur de collection avec l'expressions d'accès de l'indexeur qui en résulte) pour vérifier les éléments correspondants de la collection.
Avec C# 11, vous pouvez utiliser les modificateurs abstract
et virtual
pour les membres static
dans les interfaces et utiliser ces membres dans du code générique avec des paramètres de types spécifiés par cette interface. Rider a été mis à jour afin de gérer les membres polymorphiques de type static
de la même façon que les membres polymorphiques ordinaires :
override
incluent aussi les membres de l'interface, ce qui facilite l'implémentation des membres abstraits ou virtual static
. >>>
) Rider peut désormais reconnaître les modèles de code complexes que les développeurs C# doivent écrire afin d'effectuer un décalage à droite non signé pour des types de données avec signe, et suggère d'utiliser l'opérateur de décalage à droite non signé (>>>
) en C# 11 à la place.
Si vous analysez des Spans de caractères, vous utilisez probablement la méthode MemoryExtensions.SequenceEqual
fréquemment. C# 11 introduit un raccourci pour ce type de vérification. Vous pouvez désormais simplement faire correspondre des Span de caractères avec des littéraux de chaînes avec les expressions is
ou switch
.
Rider suggère d'utiliser les expressions is
ou switch
plutôt que de nombreuses instructions if
.
ref
et mot-clé scoped
À partir de C#11, vous pouvez déclarer les champs ref
dans les structs ref
. Rider prend en charge cette nouvelle règle de syntaxe, fournit l'ensemble des erreurs et des avertissements de compilateur, affiche le mot-clé ref
lors de la saisie semi-automatique du code et permet d'initialiser ces champs dans un constructeur.
Il prend aussi maintenant en compte le nouveau mot-clé scoped
, que vous pouvez utiliser sur les arguments by-ref
ou ref struct
et les variables locales. La prise en charge inclut l'analyse correcte de la nouvelle syntaxe, le mot-clé scoped
dans la saisie semi-automatique du code et la préservation du mot-clé scoped
lors de la génération de substitutions de méthodes. Elle vérifie également la compatibilité des modificateurs scoped
et inclut des correctifs rapides pour les paramètres scoped
qui ne concordent pas lors des substitutions, des implémentations d'interface et des conversions de délégués.
C# 11 et .NET 7 ont également introduit des modifications des règles de sécurité ref
du langage. Ces modifications déterminent les opérations qui sont disponibles pour les variables by-ref
et ref struct
, de façon à assurer la sécurité ref dans le code géré avec l'introduction de champs ref
. Rider tient compte des modifications et vous aide à trouver les parties de votre projet qui doivent être mises à jour et annotées avec le nouveau mot-clé scoped
pour intégrer ces modifications lors de la migration vers C# 11 ou .NET 7.
Ce build apporte plusieurs améliorations concernant l'injection de langage :
Nous avons ajouté la prise en charge des injections de langage utilisant les attributs [StringSyntax]
(depuis .NET 7) et [LanguageInjection]
(de JetBrains.Annotations), et du commentaire d'instruction des injections de langage // lang=<language_name>
.
Les injections de langage sont dorénavant possibles dans les chaînes interpolées et les concaténations de chaînes pour tout langage, et plus seulement pour SQL. Veuillez noter que les erreurs de syntaxe sont supprimées lors de l'utilisation de l'interpolation ou de la concaténation de chaînes avec des expressions arbitraires. Les injections de langage dans les chaînes brutes de C#11 sont également prises en charge.
Un guide d'indentation séparant l'indentation de la valeur réelle s'affiche désormais sur les littéraux de chaînes brutes.
Nous avons ajouté une nouvelle icône dans la gouttière pour prévenir les utilisateurs lors des importations d'espaces de nom implicites dans les fichiers C# et Razor.
En appuyant sur Alt+Entrée sur la ligne correspondante, vous pouvez observer la liste complète d'importations implicites et d'informations sur le fichier source où sont situées les directives global using
. Si vous sélectionnez un nom d'espace importé spécifique, Rider peut vous amener jusqu'à sa déclaration, y compris pour les balises <Using Include="Some.NameSpace" />
dans le fichier de projet .csproj
.
Rider présente également les importations générales depuis _Imports.razor
et permet de naviguer jusqu'aux définitions d'importation correspondantes.
Afin de vous aider à simplifier et à accélérer votre processus de développement, nous avons introduit le tri d'éléments assisté par machine learning pour les options de saisie semi-automatique de code dans C#.
Pour une utilisation optimale de cette fonctionnalité, vous pouvez activer deux options dans la section Settings/Preferences | Editor | General | Code Completion | Machine Learning-assisted Completion
:
Suite à l'ajout des types numériques Int128
et UInt128
dans .NET 7, nous avons mis jour les suggestions de spécification de format de saisie semi-automatique.
Nous avons également ajouté la prise en charge des types date/heure DateOnly
et TimeOnly
de .NET 6, ainsi que celle du type numérique à virgule flottante de demi-précision Half
introduit dans .NET 5.
Parfois, après la refactorisation, les expressions de correspondance de modèles peuvent se transformer en modèles récursifs simples. À ce stade, il n'est pas forcément nécessaire d'utiliser la syntaxe de schéma récursif, c'est pourquoi Rider fournit une action qui permet de réécrire les schémas sous forme d'expressions plus simples, tout en préservant la sémantique de correspondance des schémas d'origine.
Lorsque vous reprenez la saisie après un appel, il arrive que vous ne voyiez quasiment aucune suggestion pertinente. Cela peut se produire si l'appel n'a produit aucune valeur car une méthode renvoyant void
a été appelée. Généralement, il faut plusieurs actions de l'IDE pour que cela se produise (revenir en arrière et accéder à la déclaration de méthode, ou survoler l'appel). Dans cette version, nous avons introduit l'élément de conseil void
pour ces types d'appels de retour void
afin de vous fournir un retour immédiat sur le type résultant de l'appel. L'acceptation de cet élément void
ajoute un point-virgule après l'appel s'il n'y en a pas.
Rider 2022.3 introduit Hot Reload pour les applications Blazor Server. Lorsque vous modifiez le code source dans votre application Blazor Server alors que celle-ci est en cours d'exécution, Rider vous demande si vous souhaitez appliquer cette modification à l'application en cours d'exécution sans la redémarrer. Référez-vous à la barre de notifications jaune Sources are modified en haut de l'éditeur de texte. Si vous acceptez la modification, votre application sera mise à jour à la volée et vous pourrez poursuivre votre travail avec l'application actualisée.
Pour répondre à une demande récurrente de notre communauté, nous avons ajouté la nouvelle configuration d'exécution IIS Application
afin d'exécuter et de déboguer les applications ASP.NET classiques sur un serveur IIS. Nous avons également introduit la prise en charge du nom de commande IIS
depuis le fichier launchSettings.json
pour les applications ASP.NET Core.
Nous continuons à améliorer la prise en charge d'Endpoints et d'Endpoints Viewer. La visionneuse peut maintenant reconnaître et collecter les points de terminaison pour les groupes de routage d'API minimale ASP.NET Core 7. Ainsi, en plus des fonctionnalités qui étaient déjà disponibles, vous pouvez aussi rechercher, parcourir et utiliser la saisie semi-automatique intelligente du code sur les points de terminaison déclarés avec l'API MapGroup()
.
L'action .NET User Secrets a été ajoutée pour les projets ASP.NET.
Dorénavant, Rider génère automatiquement une configuration d'exécution npm
pour les projets web JavaScript et TypeScript (.esproj
) référencés par la solution (.sln
).
Les conseils d'insertion de Code Vision fonctionnent désormais aussi pour JavaScript et TypeScript. Ils facilitent le suivi des utilisations de différentes classes, méthodes, alias de type et interfaces dans votre code.
L'IDE comprend désormais la règle « at » @supports
, qui associe un bloc d'instructions à une condition @supports
. This build also includes support for viewport units, range media queries, container queries, @layer (Cascade layers), and color modification functions.
Nous avons ajouté la prise en charge de la réduction (narrowing) des types dans les modèles Angular, ce qui permet d'obtenir des informations plus précises sur les types et de meilleures suggestions de saisie semi-automatique du code.
En outre, Rider exclut désormais le dossier cache .angular
des recherches globales afin de fournir de meilleurs résultats de recherche.
La prise en charge de Unity par Rider a fait l'objet d'une nouvelle mise à jour très intéressante, avec de nouvelles fonctionnalités, des améliorations des fonctionnalités existantes et plusieurs correctifs.
Nous avons ajouté la prise en charge du nouveau package Input System de Unity. Rider sait reconnaître les méthodes utilisées en tant que gestionnaires d'événements pour les entrées et ne les présente plus comme non utilisées. Find Usages fonctionne également sur ces méthodes et montre où elles sont utilisées dans le code ou dans le fichier .inputactions
.
Lorsque vous chargez les ressources de jeu lors de l'exécution, Rider vous permet désormais de vous assurer que vous utilisez le bon chemin dans les méthodes Resources.Load
. Il vous fait des suggestions de saisie semi-automatique du code au fur et à mesure de votre saisie et met en évidence les ressources inconnues avec un avertissement.
Rider fournit la saisie semi-automatique du code et la vérification des noms de balise depuis plusieurs versions déjà, mais la version 2022.3 ajoute la prise en charge du groupe de méthodes GameObject.FindWithTag
. Les suggestions apparaissent au cours de la saisie et vous recevez un avertissement si vous tentez d'utiliser une balise qui n'existe pas dans le projet.
Dans les projets Unity, il est très important de veiller à la synchronisation des fichiers Meta avec les fichiers et les dossiers. Rider 2022.3 vous avertit si vous tentez de valider un métafichier pour un dossier vide dans le contrôle de code source. Encore plus utile, si l'éditeur Unity est ouvert, Rider vous prévient s'il reste des scènes ou des composants non sauvegardés pour vous éviter de passer à côté d'une modification lorsque vous effectuez un commit.
Nous avons aussi apporté une multitude de petites améliorations et de correctifs mineurs. Nous avons réduit le temps de chargement des projets particulièrement volumineux, ajouté une notification qui s'affiche si vous tentez de modifier un fichier de package en lecture seule, et amélioré Find Usages afin que vous puissiez l'utiliser pour des méthodes dans des prefabs imbriqués et des tableaux de gestionnaires d'événements.
Dans la prise en charge de DOTS, Rider est maintenant capable de ne pas marquer les classes implémentant IBaker
ou IAspect
comme non utilisées.
Vous pouvez désactiver les inspections de nommage pour les champs sérialisés et les traiter comme des champs normaux et les vers la documentation en ligne dirigent désormais vers les bons emplacements.
Nous tenons à remercier Unity d'avoir fourni un correctif pour faciliter le débogage des joueurs pour Nintendo Switch.
Rider permet déjà d'ajouter des CoreRedirects lors du renommage de classes ou de propriétés Unreal via la refactorisation Rename. Dorénavant, cela fonctionne aussi pour renommer :
UFUNCTION()
USTRUCT()
UENUM
Rider suggère désormais d'ajouter des CoreRedirects lorsque vous effectuez la refactorisation Rename dans ces cas.
Si vous acceptez, le fichier .ini
correspondant sera mis à jour automatiquement.
Il est désormais beaucoup moins probable que des erreurs se glissent dans votre jeu lors du renommage !
Rider 2022.3 apporte une nouvelle métrique Code Vision pour les Blueprints. Vous pouvez maintenant vérifier rapidement le nombre de Blueprints qui utilisent la fonction BlueprintCallable
et obtenir une liste de toutes les utilisations à partir du menu contextuel de Code Vision.
L'outil Generate GUID prend désormais en charge le format d'interface utilisateur graphique d'Unreal Engine. Lorsque vous devez rapidement générer une interface utilisateur graphique, choisissez simplement Tools | Generate GUID...
dans le menu et le format hexadécimal préféré sera pré-sélectionné.
L'importation automatique de la fonctionnalité de saisie semi-automatique peut vous faire gagner un temps considérable. Mais si elle ajoute une directive #include
incorrecte, ce problème risque d'être difficile à détecter. Nous avons travaillé dur pour améliorer cette fonctionnalité et nous assurer qu'elle ne suggère pas des entités indésirables à partir des en-têtes système de l'importation automatique. Par défaut, les en-têtes système ne sont pas suggérés. Pour qu'elles le soient, vous pouvez les activer dans la section Settings/Preferences | Languages & Frameworks | C++ | Unreal Engine
.
Nous avons amélioré la présentation des journaux UnrealBuildTool. Afin de ne plus manquer aucun avertissement ou aucune erreur concernant les configurations de projets, la fenêtre du journal inclut désormais un horodatage et conserve des journaux des exécutions précédentes de UnrealBuildTool.
.uproject
Pour les projets basés sur Unreal Engine, Rider fonctionne à la fois avec les projets .sln
et .uproject
. Nous poursuivons l'amélioration de la prise en charge du modèle .uproject
nati :
.project
, plus précisément AdditionalRootDirectories
et AdditionalPluginDirectories
. .Build.cs
pour les modules spécifiques à la plateforme. .uplugin
et .uproject
sont désormais pris en charge lors de l'utilisation du modèle de projet .uproject
. .uproject
est utilisé. Nous avons implémenté une action Attach to Unreal Editor pour les projets Unreal Engine. Elle permet d'attacher rapidement un processus Unreal Engine à un débogueur sans avoir à rechercher manuellement. Actuellement, vous pouvez seulement attacher processus auquel UnrealLink est connecté. Le projet qui s'exécute dans Unreal Editor doit donc correspondre à celui sur lequel vous travaillez dans Rider. Nous travaillons sur l'amélioration de ce workflow pour les futures versions.
Rider 2022.3 peut désormais s'exécuter sous Windows et Linux ARM64. Tous les workflows de développement basiques sont pris en charge, ce qui inclut l'exécution et le débogage de vos applications .NET et l'exécution de tests unitaires. Nous poursuivons notre travail et effectuons des tests pour nous assurer que Rider fonctionne correctement avec les processeurs ARM64, mais il y a encore quelques limitations :
En plus de Windows, dotMemory est désormais disponible pour JetBrains Rider sous Linux et macOS. Deux nouveaux modes de profilage sont disponibles dans le widget Run et dans le menu via Run | Switch profiler configuration
: Memory (sampled allocations) et Memory (full allocations). Vous trouverez plus d'informations sur les différences entre ces modes dans l'aide de dotMemory.
Vous pouvez attacher le profileur à un processus en cours d'exécution depuis le menu Run et voir le graphique Timeline Graph se déployer en temps réel. Sélectionnez un intervalle pour ouvrir la vue Memory Allocations, qui est identique à celle de la version de dotMemory Standalone. Cette vue vous permet d'analyser les objets alloués et les arborescences d'appels d'allocation pour une période donnée.
Malheureusement, il n'est pas encore possible de collecter des instantanés de mémoire dans cette version.
L'analyse de programme dynamique (DPA - Dynamic Program Analysis) comporte de nouvelles inspections qui permettent d'identifier différents problèmes en relation avec l'utilisation de la base de données, plus précisément :
Les nouvelles inspections sont disponibles pour toutes les applications qui utilisent Entity Framework Core et un fournisseur de données .NET pour SQL Server.
Nous avons ajouté l'action Show Covering Tests dans les menus contextuels dotCover dans l'éditeur de code et dans la fenêtre Unit Test Coverage. Cette action affiche une fenêtre contextuelle centralisant l'ensemble des tests de couverture. Cette fenêtre contextuelle permet également de créer une nouvelle session de couverture.
Désormais, dotCover copie uniquement les assemblies et les fichiers de symbole requis pour les tests continus dans JetBrains Rider. Cela améliore les performances générales de dotCover, notamment pour les grands projets, car il n'est plus nécessaire de copier l'intégralité du répertoire de travail. Si besoin, vous pouvez régler le filtre du fichier d'instantanés dans les paramètres de dotCover.
Auparavant, pour analyser la couverture des tests Unity, vous deviez redémarrer Unity avec la prise en charge de la couverture activée. À partir de cette version, le redémarrage de Unity n'est plus nécessaire et la couverture des tests est assurée directement.
La Gestion centralisée des packages (également connue en tant que fichier Directory.Packages.props
) est une fonctionnalité évolutive de la pile technologique .NET qui, au fur et à mesure de son amélioration, devrait simplifier la gestion des solutions. Avec l'ajout de la gestion centralisée des packages dans Rider, les développeurs devraient avoir plus de contrôle sur leurs dépendances.
Vous trouverez plus d'informations sur la Gestion centralisée des packages, dont des astuces et conseils, dans cet article de blog.
Chaque fois que vous utilisez des packages NuGet open source dans vos solutions, il y a un risque d’exposer votre projet à des vulnérabilités de sécurité. Afin d’atténuer ce risque, nous avons introduit la détection des dépendances vulnérables dans Rider. Rider vous signalera les dépendances vulnérables associées à l'utilisation de packages NuGet via les fenêtres contextuelles de notifications, que vous pourrez examiner plus en détail dans la section Security de la vue Problems. Les informations sur les dépendances vulnérables associées aux packages inclus dans la solution peuvent également être consultées dans la fenêtre NuGet Package Management en sélectionnant un package spécifique.
Nous avons également amélioré le défilement dans la liste Packages de la fenêtre d'outils NuGet.
Rider 2022.3 apporte la prise en charge de F# 7, ainsi que des correctifs pour plusieurs problèmes mineurs et des améliorations de l'expérience utilisateur.
La saisie <
dans un commentaire ajoute désormais un modèle de documentation. De plus, la mise en évidence des éléments de syntaxe et la saisie semi-automatique du code facilitent considérablement la modification des commentaires de documentation.
Une nouvelle règle de saisie semi-automatique du code simplifie la saisie des expressions record
, car elle met en évidence les champs de type record
inférés, masque ceux qui sont déjà utilisés et corrige divers cas pour lesquels il n'y avait pas de suggestions auparavant.
Nous avons ajouté de nouveaux correctifs rapides, Update parameter name et Update record field, qui mettent à jour les fichiers de signature, ce qui facilite leur utilisation lors de la modification du code. A huge thanks goes to Florian Verdonck for implementing them!
Nous avons vu ici les principales améliorations de la prise en charge de F#. You can find the full list of F# features included in the 2022.3 release here.
Voici les principales nouvelles fonctionnalités de Rider 2022.3 pour le travail avec les bases de données :
Pour en savoir plus, consultez la page Nouveautés de DataGrip 2022.3
La fenêtre d’outil IL Viewer de Rider est désormais capable de décompiler le code en différents niveaux de constructions du langage C#. Deux niveaux de C# sont disponibles : le niveau supérieur, avec certaines constructions syntaxiques simplifiées à l’aide des dernières fonctionnalités du langage, et le niveau inférieur pour les cas où vous souhaitez connaître l’état brut de ces constructions syntaxiques.
La mise en évidence du code et le soulignement ondulé ont été remaniés dans Rider 2022.3. En raison d'une différence de logique interne, Rider créait un conflit avec les analyseurs de style de code de Microsoft Roslyn, ce qui entraînait des chevauchements des zones sélectionnées, l'affichage de la même sélection à des endroits différents ou le doublement de lignes ondulées. Les différences de logique derrière la majorité de ces instances a maintenant été résolue, et pour les rares exceptions qui subsistent, les messages d'erreurs sont accompagnés de suggestions claires sur la façon de résoudre le problème.
En outre, Rider affiche désormais les informations Roslyn Analyzer ID et URL Reference dans l'infobulle Quick Documentation pour les inspections produites par les analyseurs Roslyn.
Nous avons implémenté une option permettant d'exécuter directement un binaire au format clang sans passer par le moteur de formatage de Rider, ce qui garantit une compatibilité totale avec l'outil de formatage standard, ainsi que de meilleures performances et un plus large gamme d'options de formatage. Vous pouvez alterner entre les options intégrées et externes du format clang en allant dans la section Settings | Editor | Code Style | C++
et en sélectionnant Clang-format.
Nous avons radicalement amélioré les performances du débogueur, y compris lorsque l'option Allow property evaluations and other implicit function calls est désactivée. Désormais, le mode sans effet secondaire permet d'évaluer beaucoup plus d'expressions dans les projets .NET, .NET Framework et .NET Core.
Nous avons rendu l'arborescence de l'explorateur de tests unitaires « lazy », ce qui augmente sa vitesse et réduit son niveau d'utilisation de la mémoire. Auparavant, tous les nœuds étaient créés automatiquement en même temps que l'arborescence de tests unitaire, s ce qui causait un décalage lors de la navigation et consommait trop de mémoire. Dorénavant, seuls les nœuds appartenant aux sections développées de l'arborescence seront créés, ce qui améliore grandement la performance.
32 bits
de MSBuild est à court de mémoire et passer à la version 64 bits
de Visual Studio. Solution Wide Analysis et la commande Find usages ont été refactorisés. Selon les tests internes, elles sont en moyenne de 20 à 40 % plus rapides qu'avant.