Nouveautés de Rider

Rider 2021.3 ajoute la prise en charge officielle du SDK .NET 6, notamment la fonctionnalité Hot Reload. Cette version apporte une barre d'outils principale et un onglet Debug entièrement repensés, ainsi qu'une nouvelle fenêtre d'outils Problems View. Rider prend également en charge davantage de fonctionnalités C# 10, telles que les espaces de noms au niveau du fichier et les directives using avec global, pour vous aider à utiliser plus efficacement les dernières évolutions du langage.

Les dernières mises à jour permettent aussi la prise en charge de Unity et F#, de Reformat and Cleanup on Save, de l'aperçu XAML pour les SDK .NET 6, .NET 5 et .NET Core 3.x, et des puces Apple Silicon.

Prise en charge du SDK .NET 6

Rider 2021.3 prend officiellement en charge le SDK .NET 6, notamment :

  • Les modèles de projets.
  • Les derniers frameworks cibles.
  • La dernière API NuGet.
  • Hot Reload.
  • Le débogage Blazor WebAssembly.
  • La création, l'exécution et le débogage de projets ciblant le nouveau SDK.
  • La génération de code ASP.NET pour les projets .NET 6.

Rider offre également une prise en charge précoce des projets Xamarin iOS et Xamarin Android qui font partie du SDK .NET 6.

Hot Reload

Rider prend maintenant en charge la fonctionnalité Hot Reload de .NET 6 ! Lorsque vous modifiez le code source géré de votre application 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. Repérez la barre de notification 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.

La fonctionnalité Hot Reload est automatiquement activée lors de l'utilisation des configurations d'exécution .NET Project et .NET Launch Settings Profile.

Une nouvelle page est dédiée à l'activation et à la désactivation de la fonctionnalité Hot Reload : Preferences/Settings | Build, Execution, Deployment | Hot Reload.

Limitations :

  • Le débogage pendant une session Hot Reload n'est disponible que sous Windows, où vous pouvez utiliser Hot Reload en même temps que le débogueur et appliquer automatiquement les modifications lors des étapes et des reprises. Hot Reload fonctionne sur toutes les plateformes hors mode débogage.
  • Hot Reload ne prend pas en charge les applications F# et VB.NET, ni les modifications apportées aux formats d'interface utilisateur dans des frameworks tels que WPF, Windows Forms et .NET MAUI. Blazor WebAssembly (WASM) n'est pas encore pris en charge.
  • Pour afficher les modifications que vous avez apportées à des pages Razor, vous devez actualiser la page dans votre navigateur. Le rechargement automatique des pages sera ajouté dans les prochaines versions.

En savoir plus : Hot Reload pour .NET 6 dans Rider 2021.3

Interface/expérience utilisateur

Barre d'outils principale repensée

L'ancienne barre d'outils principale présentait certains problèmes que nous voulions éliminer. Elle comportait trop d'icônes, dont la plupart n'étaient pratiquement jamais utilisées. Les fonctionnalités de VCS et de navigation n'étaient pas facilement accessibles. Et surtout, il n'était pas possible de contrôler plusieurs configurations d'exécution.

Rider 2021.3 est doté d'une barre d'outils principale entièrement remaniée. Avec le nouveau design, nous avons essayé d'apporter une barre d'outils propre et fonctionnelle. Elle comprend les éléments suivants :

  • Les boutons Back et Forward, qui constituent les bases de la navigation contextuelle pour Rider.
  • Un widget VCS permettant d'accéder à toutes les fonctionnalités liées au contrôle de version et de les utiliser. Ce widget est maintenant situé plus près de la fenêtre d'outils Commit.
  • Un grand champ Search Everywhere qui sert de point d'entrée principal pour la fonction de recherche globale.
  • Un widget Solution Configuration pour gérer les configurations associées à la solution.
  • Un nouveau widget Run/Debug qui vous permet de gérer et de contrôler facilement vos configurations d'exécution.

Pour éviter de perturber le flow des utilisateurs de Rider habitués à l'ancienne barre d'outils, la nouvelle barre ne sera activée par défaut que sur les nouvelles installations de Rider. Si vous avez déjà installé Rider et souhaitez essayer la nouvelle barre d'outils, vous pouvez l'activer à tout moment dans View | Appearance | Toolbar au lieu de Toolbar Classic.

Vue Problems

Il peut être utile de centraliser tous les problèmes potentiels d'une solution, c'est pourquoi nous inaugurons dans cette version la vue Problems View ! La vue Problems (l'onglet Problems dans l'interface utilisateur Rider) est une fenêtre d'outils qui regroupe tous les problèmes potentiels d'une solution, tels que les erreurs de chargement de projets, les processus de restauration NuGet qui ont échoué, les inspections à partir d'un fichier ouvert et toutes les erreurs SWEA. La fenêtre d'outils se compose de trois onglets.

Current File

Vous trouverez ici l'ensemble des erreurs, avertissements, suggestions et indications que l'analyse de code Rider a trouvés dans le fichier sur lequel vous travaillez actuellement. De la même manière que dans nos IDE basés sur IntelliJ, le widget Inspection situé en haut de la barre de défilement verticale mène directement à cet onglet.

Toolset, Environment

Cet onglet regroupe tous les diagnostics et messages concernant les activités de chargement de la solution, les processus de restauration NuGet, etc. Pour chaque problème, il offre une description appropriée et une liste des correctifs correspondants, s'il en existe. Auparavant, vous deviez ouvrir la fenêtre d'outils Event Log pour trouver les détails de ce type de messages de diagnostic.

All Solution Files

C'est le nouvel emplacement de la fenêtre d'outils SWEA. Vous pouvez y consulter toutes les erreurs que l'analyse Solution Wide Error Analysis a trouvé dans la solution.

Nouvelle fenêtre d'outils Bookmarks

Nous inaugurons la nouvelle fenêtre d'outil Bookmarks, destinée à remplacer une instance similaire, Favorites.

Lorsque vous ajoutez un signet, Rider le place par défaut dans le nœud portant le nom de votre projet dans la fenêtre d'outil Bookmarks. Chaque fois que vous ajoutez un nouveau signet, il s'affiche en haut de la liste à l'intérieur de ce nœud. Vous pouvez également créer de nouveaux nœuds et y glisser-déposer des éléments.

Débogueur

Nouvelle interface utilisateur pour l'onglet Debug

Nous inaugurons une nouvelle interface utilisateur pour l'onglet Debug ! Nous avons beaucoup de changements à évoquer.

Trois onglets sont disponibles par défaut : Threads & Variables, Console et Debug Output. D'autres onglets comme Memory et Parallel Stacks sont masqués, mais vous pouvez les afficher via l'icône 'engrenage tout à droite dans le menu Options.

Nous avons supprimé la barre d'outils de gauche et déplacé les icônes qui s'y trouvaient dans la barre d'outils supérieure ou le menu contextuel. Afin que la barre d'outils supérieure soit aussi compacte que possible, nous avons réorganisé les icônes et seules les actions les plus importantes restent visibles. Le reste des icônes a été déplacé vers le menu déroulant More (icône points verticaux). L'icône Hide Frames from Libraries et le bouton Hide/Show Threads ont été déplacés dans le menu contextuel de la vue Threads.

Le menu déroulant More dispose d'un nouveau sous-menu Settings. Vous y trouverez une liste des paramètres les plus courants pour le débogueur. Plus besoin de les rechercher (auparavant, vous deviez aller dans la boîte de dialogue Settings/Preferences et chercher jusqu'à la page Build, Execution, Deployment | Debugger.

Modifications dans la fenêtre Immediate

Vous avez le choix entre deux mises en page : étendue et réduite. Dans la présentation réduite, la vue Variables n'affiche le résultat de l'exécution que dans la variable $result. Dans la présentation étendue, en plus de la variable $result, vous pouvez consulter l'historique des lignes précédemment exécutées ainsi que leurs résultats. Vous pouvez passer d'une mise en page à l'autre grâce à l'icône Étendre/Réduire.

Add Watch a été déplacé de la vue Variables vers la barre d'outils de la fenêtre Immediateet a maintenant un raccourci : Ctrl+Maj+Entrée.

La nouvelle option Stop on Breakpoints force le processus d'évaluation à s'arrêter aux points d'arrêt lors de l'exécution d'une expression. Vous pouvez désactiver cette option pour que le processus d'évaluation ignore les points d'arrêt.

Pour faciliter l'évaluation d'un objet ayant de nombreuses propriétés, nous avons ajouté une icône Evaluate qui ouvre la fenêtre Evaluate avec cet objet déjà évalué. Il est beaucoup plus facile d'examiner les propriétés de l'objet sous forme d'arborescence dans cette fenêtre.

Débogage pour les applications UWP

Bonne nouvelle pour les développeurs UWP : vous pouvez démarrer votre projet UWP avec le débogueur associé directement. Il n'est plus nécessaire d'exécuter d'abord le projet, puis de joindre manuellement le débogueur au processus en cours.

Prise en charge des conteneurs Docker Windows

Vous pouvez désormais déboguer les applications .NET (Core) et .NET Framework dans des conteneurs Docker Windows locaux. Auparavant, le débogueur ne pouvait fonctionner avec des applications .NET Core que dans des conteneurs Docker Linux.

Autres mises à jour

Lorsque vous créez un délégué standard (System.Func ou System.Action), vous pouvez facilement naviguer vers une méthode ou une expression lambda que ce délégué encapsulera. Essayez le lien Navigate pour le nœud du délégué dans la liste Variables.

Lorsque vous créez un gestionnaire d'événement event handler (delegate) en utilisant une expression lambda, vous pouvez examiner les abonnés et les objets collectés à l'aide du nouveau moteur de rendu.

Le gestionnaire d'événement comporte maintenant un nœud Subscribers avec un sous-nœud Captured variables. Pour naviguer rapidement vers l'emplacement de l'abonnement à un événement, nous avons ajouté un nouveau lien Navigate pour chaque abonné.

Analyse du code

C# 10

Nous continuons d'ajouter de nouvelles fonctionnalités de C# 10 dans Rider. Cette version prend en charge les espaces de nom au niveau du fichier, les directives using avec le modificateur global, l'attribut CallerArgumentExpression, le concept de « gestionnaires de chaînes interpolées » et les lambdas C# 10.

Commençons par les espaces de nom au niveau du fichier. En plus de la prise en charge de la nouvelle syntaxe elle-même, nous avons ajouté une nouvelle option Syntax style qui vous permet de sélectionner le style que vous souhaitez (Settings/Preferences | Editor | Code Style | C# | Syntax Style | Code body | Namespaces). Lorsque vous choisissez un style, Rider présente des inspections portant sur le code qui doit être changé pour appliquer le style et vous suggère des correctifs rapides. Vous pouvez propager les correctifs dans le projet, voire dans le reste de la solution, en un clic.

Vous disposez de deux actions contextuelles permettant de rétablir le style de syntaxe précédent : Convert to file-scoped namespace et Convert to block-scoped namespace.

En savoir plus : noms d'espace au niveau du fichier

Voyons de plus près les directives using avec modificateur global. L'analyse du code de Rider tient compte des directives using accompagnées du mot-clé global et les utilise pour résoudre correctement les symboles de l'ensemble des fichiers de code du projet. Rider vous préviendra également si une directive using avec global a été placée au mauvais endroit dans un fichier.

Rider met en évidence les directives using avec global inutilisées dans le projet et propose un correctif rapide pour supprimer la déclaration.

Rider offre aussi une prise en charge enrichie de l'attribut CallerArgumentExpression, notamment la saisie semi-automatique et des inspections de code, afin de vous aider à l'utiliser correctement.

En savoir plus : CallerArgumentExpressions

C# 10 a introduit le nouveau concept de « gestionnaire d'interpolation de chaîne ». Pour les utilisateurs finaux, cela signifie que les expressions d'interpolation de chaînes fonctionneront généralement plus vite dans .NET 6 et que les nouveaux gestionnaires permettront d'utiliser les valeurs Span<char> pour les lacunes d'interpolation. Pour les auteurs de bibliothèques, cette fonctionnalité leur permet de contrôler si les expressions d'interpolation de chaînes sont converties en chaînes. Rider reconnaît les modèles de «  gestionnaires de chaînes interpolées » dans le code de la bibliothèque et peut faire des suggestions fiables concernant l'utilisation des expressions d'interpolation de chaînes dans plus d'endroits.

Rider permet d'obtenir de meilleures performances à partir des records de types structs en vous suggérant de les marquer en tant que readonly. Pour éviter de surcharger les déclarations de type avec des modificateurs inutilement, cette inspection sera proposée uniquement lorsque le type record contient des membres d'instance sans mutation et lorsqu'il n'y a pas de mutation via setters dans la solution (pour le déterminer, il faut effectuer une analyse de l'ensemble de la solution).

C# 10 permet de simplifier la syntaxe de reconnaissance de schémas en autorisant la syntaxe à point plutôt que l'imbrication de schémas d'objets.

Rider fournit l'inspection correspondante avec un correctif rapide, ainsi qu'une action contextuelle permettant d'annuler le correctif rapide.

Et pour finir, mais tout aussi important :

  • Nous avons amélioré la prise en charge des lambdas de C# 10 : vous ne devriez plus voir de code en rouge ou d'erreurs dues à des faux positifs dans les projets .NET 6 Minimal API. En bonus, Rider vous aide à utiliser la bonne syntaxe et à ajouter des parenthèses au bon endroit lorsqu'elles sont requises par le compilateur.
  • Rider prend désormais en charge Program en tant que nom de classe générée valide pour le code avec des déclarations de niveau supérieur.
  • La prise en charge initiale des membres static abstract dans les interfaces est désormais possible. L'analyse du code considère cette construction comme valide, ce qui signifie que vous ne devriez plus avoir affaire à du code rouge. La fonctionnalité Generate missing members tient compte des membres static abstract et les gère correctement. Cette version inclut également les marqueurs dans la gouttière d'héritage et la possibilité d'accéder aux symboles de base/dérivés.

Types de référence nullables

Les développeurs utilisent souvent du code provenant de sources externes comme stackoverflow.com. Désormais, avec les types de référence nullables disponibles dans C#, certains échantillons de code incluent déjà la syntaxe NRT. Mais que se passe-t-il si NRT n'est pas activé dans votre solution ? Rider fournit deux nouveaux correctifs rapides pour vous aider à éliminer cette syntaxe après avoir copié ce type de code dans votre projet : Replace with JetBrains.Annotations attributes et Remove nullable annotations without ‘#nullable' context.

De temps à autre, il peut y avoir des incohérences de nullabilité entre les arguments de type et leurs contraintes. Vous disposez à présent de correctifs rapides pour ces cas, notamment pour :

  • Supprimer les annotations nullable des arguments de type.
  • Supprimer les contraintes notnull des arguments de type.
  • Autoriser les valeurs nullable dans les paramètres de type.
  • Interdire les valeurs nullable dans les paramètres de type utilisés en tant qu'arguments de type.

Un correctif rapide groupé permet de corriger les annotations de paramètres ayant des valeurs par défaut nullable dans un fichier, un projet ou l'ensemble de la solution.

Il existe également un nouveau correctif rapide groupé qui rend un paramètre nullable si la valeur null a été vérifiée dans une méthode.

Analyse du code C#

Nous avons ajouté deux correctifs rapides et une action contextuelle pour les fonctions locales/anonymes statiques comportant des fermetures :

  • Le correctif rapide Allow closures supprime les modificateurs statiques d'une fonction locale ou anonyme si elle contient des fermetures.
  • Le correctif rapide Pass closure as a parameter transfère les fermetures des fonctions locales statiques dans les paramètres.
  • L'action contextuelle Pass closure as a parameter transfère les fermetures des fonctions locales autres que statiques dans les paramètres.

Rider propose une nouvelle inspection Simplify string interpolation, avec un correctif rapide correspondant qui remplace les appels de méthode .PadLeft() et .PadRight() par des expressions d'alignement dans les emplacements de chaînes interpolées.

Outre l'ajout du nouveau record struct de C#10, nous avons amélioré la prise en charge des structs standards. De nombreux développeurs utilisent toujours des classes avec des initialisateurs d'objet pour leurs DTO. Désormais vous pouvez rapidement transformer toutes ces utilisations en constructeurs avec des paramètres. Vous pouvez faire cela soit à partir de la déclaration record elle-même, soit à partir d'un initialisateur d'objet. Veuillez noter qu'il est également possible de convertir des DTO qui définissent un constructeur avec des affectations de propriété.

Depuis quelque temps déjà, Rider vous met en garde contre les incohérences de verrouillage des champs. Dans cette version, nous avons ajouté une inspection qui prend en compte l'ordre de verrouillage des ressources et signale les éventuels cycles de blocage.

Dorénavant, Rider vérifie la plausibilité des expressions d'arithmétique intégrale en recherchant les types d'entiers supplémentaires. Cela concerne les types byte, sbyte, short, ushort, uint, long, ulong et enum. Cela évite d'obtenir des branches de code inaccessibles.

Performances d'analyse du code

Nous avons réduit le temps d'implémentation des correctifs rapides et des actions contextuelles lorsqu'ils sont appelés pour un dossier, un projet ou une solution.

Si Solution-Wide Error Analysis (SWEA) est activé avec Monitor warnings, Rider utilise désormais les résultats SWEA pour simplement ignorer les fichiers sans problèmes correspondants, ce qui accélère considérablement la recherche des problèmes à corriger.

Nous avons également de bonnes nouvelles pour les personnes qui n'exécutent pas d'analyse SWEA pour leurs solutions ! Rider utilise désormais tous les cœurs CPU disponibles pour exécuter l'analyse du code en parallèle. Cela réduit la durée nécessaire à l'exécution des correctifs rapides et des actions contextuelles.

 

Nous avons amélioré de façon significative les performances du démon pour les fichiers comportant des méthodes très volumineuses, notamment :

  • Méthodes avec des expressions conditionnelles longues ou imbriquées, des expressions de tuple ou des expressions switch.
  • Les méthodes avec de nombreuses vérifications de type lorsque les types de référence nullables sont désactivés.
  • Les méthodes avec de nombreux accès d'indexation lorsque les types de référence nullables sont activés.
  • Les méthodes avec de nombreux closures lorsque les types de référence nullables sont activés.

Injections de langage SQL

Nous avons amélioré la prise en charge des injections de langage SQL. Nous prenons désormais en charge un grand nombre de cas courants dans lesquels vous écrivez du code SQL directement dans du code C#.

Les chaînes de requêtes SQL sont correctement résolues pour les méthodes string.Format, les interpolations de chaînes et les concaténations simples de chaînes.

L'utilisation de variables SQLParameter avec le dialecte Microsoft SQL Server ou la bibliothèque Dapper pour les paramètres des chaînes de requête SQL ne provoque plus d'erreurs.

Développement de jeux

Unity

Cette version apporte des mises à jour majeures à la prise en charge des fichiers de définition d'assembly. Vous pouvez utiliser Ctrl+Clic pour naviguer vers une référence, trouver les occurrences des définitions d'assemblies dans l'ensemble du projet (même dans les paquets référencés), renommer les définitions d'assemblies et bénéficier d'une saisie semi-automatique lors de l'ajout de nouvelles références.

Rider fonctionnera également avec les références basées sur les GUID, en affichant une indication utile avec le nom de la définition de l'assembly cible, ainsi que des actions Alt+Entrée pour convertir les références nommées en références basées sur les GUID.

Rider met désormais en évidence les « define constraints » non respectées dans les fichiers de définition d'assemblies. Cela vous permet de comprendre facilement pourquoi un assemblage a été exclu. Vous bénéficiez même de la saisie semi-automatique pour les symboles define !

La configuration de version defines a également été simplifiée, avec la saisie semi-automatique des noms de paquets et un conseil d'incrustation pour la version actuellement installée. Rider mettra également en évidence le symbole si la condition n'est pas remplie.

Rider affiche désormais les fichiers sources des paquets Unity référencés, dans un contexte spécial qui fournit des informations sur les symboles définis lors de la compilation des paquets. Dans ces fichiers sources, les branches correctes du préprocesseur sont donc mises en évidence.

L'attribut [Tooltip] de Unity fournit le texte que l'inspecteur peut afficher lors de la modification des champs. Rider affichera également ce texte dans la fenêtre contextuelle de documentation rapide lorsque vous utilisez un champ sérialisé. Une nouvelle action contextuelle permet de créer l'infobulle à partir de la documentation XML et inversement.

La prise en charge du débogage des appareils iOS via USB a été mise à jour dans Rider pour fonctionner avec Apple Silicon, et cette version se dote également d'une prise en charge pour Linux.

L'index des ressources examine maintenant les paquets référencés. Rider peut donc trouver des occurrences du code dans les préfabriqués en fonction des ressources dans les paquets.

Le suivi des métafichiers a été entièrement réécrit pour gérer davantage de cas d'utilisation. Il devrait fonctionner en toute fluidité pour l'ajout, la suppression, le renommage, le déplacement ou la refactorisation des fichiers dans la fenêtre d'outil Unity Explorer.

Cette version apporte également son lot habituel de correctifs, tels que la mise à jour de l'index des ressources lors de la mise à jour du fichier par certains types d'applications externes, l'ouverture de fichiers à partir d'Unity sur Apple Silicon et la mise à jour de l'analyse Burst pour l'aligner sur les changements effectués dans le compilateur Burst. Nous avons également amélioré les performances de Rider pour la recherche des versions installées d'Unity et l'actualisation de la fenêtre d'outil de visualisation des journaux Unity.

Unreal Engine Accès anticipé

Tests Unreal Engine

Si vous ajoutez des tests à votre jeu à l'aide du framework de test Unreal Engine, Rider peut désormais lancer des tests pour vous et afficher leurs résultats dans la fenêtre d'outils Unit Test. Dans cette fenêtre d'outils, vous pouvez examiner les résultats des tests et relancer ceux que vous voulez : des tests spécifiques, ceux qui ont échoué, ou l'ensemble des tests. Vous pouvez également regrouper les tests en fonction des indicateurs qui leur sont envoyés.

En savoir plus

Rider for Unreal Engine continue son parcours de sa version d'accès anticipé vers sa version finale. Pour l'instant, cela reste un accès gratuit sous la forme d'une version distincte de Rider, disponible après envoi d'un formulaire.

Frameworks

WPF

L'aperçu XAML fonctionne désormais pour les applications qui ciblent les SDK .NET 6, .NET 5 et .NET Core 3.x. Vous pouvez prévisualiser directement dans Rider les résultats des modifications apportées au code XAML.

Xamarin

  • Dans l'éditeur de Plist, nous avons implémenté la prise en charge des schémas standards de Xcode. Rider peut ainsi proposer des noms conviviaux pour les clés, la validation des valeurs en fonction du type de clé, et une liste de clés possibles lorsque vous en ajoutez une nouvelle à la plist. Ces schémas fonctionnent aussi bien sous macOS que sous Windows.
  • Vous pouvez désormais télécharger les composants Android sous forme de paquets NuGet directement depuis l'éditeur.
  • La prise en charge des bibliothèques AndroidX est disponible pour les projets compatibles.
  • Nous avons amélioré la présentation de l'éditeur Android.

Nettoyage, mise en forme et styles de code

Reformat and Cleanup on Save

Nous inaugurons le paramètre Reformat and Cleanup on Save. Cette fonctionnalité vous permet de remettre en forme et de réorganiser votre code chaque fois que vous appelez explicitement Save ou Save All dans l'IDE. Tous les déclencheurs implicites de la sauvegarde, tels que les builds, le passage à un autre onglet et les commits, n'entraîneront pas de remise en forme du code. Toutefois, Rider ajoutera le document modifié à une liste interne de fichiers qui seront nettoyés et remis en forme lors de la prochaine sauvegarde explicite. Nous espérons que cette fonctionnalité vous aidera à préserver la propreté et l'ordre de votre code sans avoir à vous en soucier.

Pour activer et ajuster ce paramètre, accédez à Preferences/Settings | Tools | Actions on Save. Vous pouvez y sélectionner le profil de nettoyage à utiliser. La liste des profils disponibles est héritée de la page Preferences/Settings | Editor | Code Cleanup. Vous pouvez également indiquer si l'action doit être appliquée à l'ensemble du fichier ou seulement aux lignes modifiées.

De même, la fonction Reformat and Cleanup on Save respecte le paramètre Do not format. Pour spécifier les fichiers et les répertoires à exclure de la mise en forme, utilisez l'onglet Preferences/Settings | Editor | Code Style | Formatter.

Autres améliorations

La fonction Reformat and Cleanup fonctionne pour plusieurs fichiers et répertoires sélectionnés dans la fenêtre d'outil Solution Explorer.

Nous avons ajouté de nouvelles options à l'outil de mise en forme :

  • Une option permettant d'indenter les accolades lambda ou les accolades de modèle de propriété à l'intérieur des conditions de l'instruction, comme par exemple dans if() et de while().
  • Une option permettant d'aligner les conditions de l'instruction à l'intérieur des parenthèses dans if(), foreach(), et ainsi de suite. Elle est ACTIVÉE par défaut.
  • Des options permettant d'envelopper, de hacher, d'aligner et de mettre en retrait des schémas binaires, par exemple, x is Foo or Bar or Baz.

À partir du SDK .NET 5, vous pouvez configurer les options de l'analyseur Visual Studio à l'aide de fichiers AnalyzerConfig globaux. Rider 2021.3 peut lire les informations de style du code à partir de ces fichiers AnalyzerConfig globaux et l'utiliser pour ajuster les règles de Rider en conséquence.

Développement web

Nouvelle inspection pour la mise à jour des dépendances

Rider 2021.3 vous permet de mettre à jour vos paquets npm vers la dernière version directement depuis l'éditeur ! Ouvrez votre fichier package.json, placez le curseur sur la version du paquet que vous souhaitez mettre à jour, puis appuyez sur Alt+Entrée et sélectionnez Update 'nom du paquet' to the latest version. Un correctif rapide s'affiche également lorsque vous survolez la version du paquet avec votre souris. Vous trouverez plus d'explications sur cette inspection dans cet article de blog.

Amélioration de la saisie semi-automatique du code HTML

Nous avons amélioré le fonctionnement de la saisie semi-automatique du code en HTML. Chaque fois que vous saisissez un nom de balise ou une abréviation dans l'éditeur, ou que vous appelez la saisie semi-automatique du code, Rider affiche immédiatement des suggestions pertinentes. Auparavant, il ne les montrait que si vous commenciez par saisir <. De plus, la saisie semi-automatique du code pour les références aux entités de caractères devrait mieux fonctionner à présent.

Prise en charge de NuGet

Rider peut générer des Binding Redirects pour les paquets NuGet dans les projets .NET Framework. Si des redirections Binding Redirects sont nécessaires dans votre projet, Rider les ajoutera au fichier App.config ou Web.config.

Les Binding Redirects sont générées lors de l'installation ou de la mise à jour d'un paquet NuGet. Toutefois, vous pouvez demander à Rider de générer les redirections Binding Redirects manuellement à tout moment en cliquant sur Tools | Generate Binding Redirects, dans le menu contextuel du projet de la fenêtre d'outils Solution Explorer.

Vous trouverez une nouvelle propriété, Auto-Generate Binding Redirects, dans l'onglet Applications de la page Properties du projet. Elle demande à MSBuild de générer des redirections Binding Redirects pendant la génération du projet si le fichier App.config n'en comporte pas.

Outre l'ajout de la prise en charge des Binding Redirects, nous avons apporté une petite amélioration à l'ergonomie. Vous pouvez désormais désinstaller les paquets NuGet directement depuis la fenêtre d'outil Solution Explorer.

Prise en charge d'Apple Silicon

À partir de cette version, Rider fonctionne en mode natif sur les ordinateurs Mac équipés de processeurs Apple Silicon. Rider 2021.3 utilise les runtimes suivants :

  • Le JetBrains Runtime compatible avec Apple Silicon pour le frontend.
  • Le .NET6 RTM pour le backend.

Plus de traduction de x64 en ARM64 ! Rider est maintenant super rapide sur les puces Apple !

Prise en charge de F#

La plus grande nouvelle est que Rider prend désormais officiellement en charge F# 6 ! Dans cette version, vous trouverez également de nombreuses mises à jour de qualité pour la saisie semi-automatique du code, les refactorisations et la navigation, ainsi que diverses autres améliorations pour la prise en charge du langage F#.

La refactorisation Introduce Variable a bénéficié de plusieurs mises à jour puissantes. Elle suggère désormais de déconstruire les tuples et les types union à cas unique lorsque c'est nécessaire, et elle préconise également d'utiliser des types de calcul dans les expressions de calcul. Elle recommande en outre les mots-clés use et use! lorsque c'est pertinent, et nous avons amélioré le placement de la liaison ajoutée.

Cette version contient un certain nombre de mises à jour pour la saisie semi-automatique du code, notamment un meilleur ordre de suggestion et un filtrage préliminaire des mots-clés en fonction du contexte (certains mots-clés ne s'affichent plus s'ils ne sont pas applicables). Il est désormais plus facile d'utiliser les fonctions F# de manière récursive, car il n'est plus nécessaire de revenir en arrière et d'ajouter manuellement des rec à la fonction qui les contient.

Une autre mise à jour notable concerne la saisie semi-automatique du code. Lors de la saisie semi-automatique de schémas de cas union, Rider vous propose d'utiliser la correspondance des schémas pour ces champs.

De nouvelles icônes dans les résultats de Find Usages vous aideront à distinguer les invocations, les applications partielles, les schémas et les autres types d'utilisation.

Rider vous permet désormais d'étendre correctement votre sélection à l'intérieur des chaînes interpolées. Special thanks to Andrew Rublyov for this contribution! Le comportement de sélection pour _ et divers types de crochets a également été amélioré.

Nous avons implémenté un certain nombre de petits correctifs rapides, de refactorisations et d'autres améliorations dans la prise en charge de F#. Please take a look at the full release notes for more information.

Plugins

dotCover
dotUltimate

Code Vision se dote d'une nouvelle statistique, Covering tests. Elle s'affiche si Rider dispose des informations de couverture pour le projet, et si la méthode (ou la propriété, l'indexeur ou l'événement) est couverte par au moins un test.

Vous pouvez l'activer ou la désactiver à partir de la page Settings/Preferences | Editor | Code Vision.

Vous pouvez désormais lancer des tests unitaires à partir d'une fenêtre contextuelle qui s'affiche lorsque vous cliquez sur la ligne de couverture à gauche de l'éditeur de code.

dotTrace
dotUltimate

Le plugin dotTrace vous permet de collecter des données sur les appels asynchrones sous macOS et Linux. Pour obtenir ces données, utilisez le mode de profilage Timeline. L'arborescence Call Tree affiche les appels asynchrones, notamment awaits et continuations.

Le plugin dotTrace peut profiler les processus enfants des applications sous macOS et Linux dans le mode de profilage Timeline. Cette prise en charge est disponible uniquement pour les applications .NET 5+.

Navigation et Find Usages

Nouveaux marqueurs dans la gouttière

Nous avons ajouté quelques nouveaux marqueurs dans la gouttière afin de vous aider à parcourir la structure d'héritage d'une classe, d'une interface ou d'un struct. Les nouvelles icônes ↑O et ↑I indiquent qu'une entité de code hérite d'une autre classe ou interface ou l'implémente. Si cet héritage d'entité de code est complexe, la sélection d'une icône affiche un menu avec tous ses ancêtres au-dessus de cette dernière, jusqu'au sommet de la hiérarchie d'héritage. Si une classe implémente une interface et une classe simultanément, ou en hérite, Rider place l'icône ↑IO dans la gouttière.

Nous avons également activé les marqueurs dans la gouttière pour les membres de classes par défaut. Rider ajoute l'icône ↓O dans la gouttière de gauche à côté d'un membre de classe si ce dernier est remplacé dans les classes dérivées. Cliquez sur l'icône pour :

  • Naviguer vers un membre dans une classe dérivée qui remplace ce membre.
  • Afficher un menu comportant la liste des membres d'autres classes qui remplacent ce membre.

Find Usages pour les opérateurs de conversion implicite définis par l'utilisateur

Vous pouvez désormais appeler Find Usages pour les opérateurs de conversion implicite définis par l'utilisateur ! L'implémentation de cette fonctionnalité dépend du mécanisme utilisé pour les conseils de conversion de type.

Cela vous permet de savoir si des opérateurs de conversion implicites définis par l'utilisateur sont utilisés, puis de naviguer vers les blocs de code comportant des conversions.

Veuillez noter que cet algorithme est plutôt lent et que les opérations de calcul et d'affichage des résultats peuvent prendre un peu de temps.

Prise en charge des bases de données

Vue Aggregate dans l'éditeur de données

Nous avons ajouté la possibilité d'afficher une vue Aggregate pour une plage de cellules. Cette fonctionnalité très attendue vous permettra de gérer vos données et vous épargnera l'écriture de requêtes supplémentaires ! Cela rend l'éditeur de données encore plus puissant et simple d'utilisation, et le rapproche encore un peu plus d'Excel et des feuilles de calcul Google.

Sélectionnez simplement la plage de cellules pour laquelle vous voulez afficher la vue, puis cliquez droit et sélectionnez Show Aggregate View.

Mappage de la source de données DDL et de la source réelle

Cette version vient compléter la précédente version de l'IDE, dans laquelle nous avions introduit la possibilité de générer une source de données DDL basée sur une source réelle. Désormais, ce workflow est totalement pris en charge. Vous pouvez :

  • Générez une source de données DDL à partir d'une source réelle : consulter l'annonce de DataGrip 2021.2.
  • Mapper une source de données DDL et une source réelle.
  • Comparer et synchroniser ces sources dans les deux sens.

Pour rappel, une source de données DDL est une source de données virtuelle dont le schéma repose sur un ensemble de scripts SQL. Le stockage de ces fichiers dans le système de contrôle de version (VCS) est une méthode possible pour conserver votre base de données dans ce système.

Les propriétés de configuration des données comportent un nouvel onglet, DDL mappings, permettant de définir quelle source de données réelle est mappée à chaque source de données DDL.

Nouvelle fenêtre de comparaison des bases de données

La nouvelle fenêtre Database Diff est disponible à partir du menu contextuel. L'interface utilisateur est plus conviviale et le volet de droite indique clairement le résultat que vous obtiendrez après la synchronisation.

La légende du panneau droit donne la signification des couleurs pour votre résultat potentiel :

  • Vert et italique : l'objet sera créé.
  • Gris : l'objet sera supprimé.
  • Bleu : l'objet sera modifié.

L'onglet Script preview affiche le script du résultat qui peut ensuite être ouvert dans une nouvelle console ou exécuté depuis cette boîte de dialogue. Le résultat de ce script applique les modifications pour faire de la base de données de droite (cible) une copie de la base de données de gauche (source).

Outre l'onglet Script preview, le panneau inférieur comporte deux autres onglets : Object Properties Diff et DDL Diff. Ils indiquent les différences entre les versions particulières de l'objet dans les bases de données source et cible.

Autres

Propriétés du projet

Cette version ajoute plusieurs nouveaux paramètres à la boîte de dialogue Project Properties :

  • Vous pouvez personnaliser l'icône de l'application dans la section Resources de la page Application.
  • Une nouvelle page Build Events permet de spécifier les commandes à exécuter avant et après le build.
  • La page Inspections comporte plusieurs nouvelles propriétés de projet liées à l'analyse du code : Localizable, Localizable inspector et Solution-Wide inspections.
  • Vous pouvez configurer les chemins de référence pour un projet sur la page Reference Paths.
  • Il existe une nouvelle propriété, Auto-Generate Binding Redirects, dans l'onglet Applications. Consultez la section Prise en charge de NuGet ci-dessus pour en savoir plus sur les redirections Binding Redirects.

Propriétés de la solution

Le tableau de la boîte de dialogue Solution Properties comporte une nouvelle colonne Dependancies qui permet de spécifier les dépendances de build pour chaque projet. Certains projets ne peuvent pas être sélectionnés afin d'éviter les dépendances circulaires.

Configurations d'exécution

À partir de la version 2021.3, Rider importe tous les fichiers .pubxml de Properties/PublishProfiles lorsqu'un projet est chargé, et les convertit en configurations d'exécution. À chaque fois que vous ajoutez un nouveau fichier .pubxml, une nouvelle configuration d'exécution est générée automatiquement. Vous n'avez plus besoin de créer ces configurations d'exécution manuellement !

Un sélecteur de runtime explicite permet de spécifier l'environnement runtime d'exécution de l'application. Les options affichées dépendent du système d'exploitation que vous utilisez, mais la liste complète contient : .NET/.NET Core, .NET Framework et Mono.

Prise en charge de l'attribut EditorBrowsable dans la saisie semi-automatique de code

Vous pouvez désormais ajuster la liste de la saisie semi-automatique du code pour filtrer les éléments en fonction de l'attribut EditorBrowsable. Il suffit de sélectionner le comportement souhaité sur la page Preferences | Editor | General | Code Completion sous Filter members by EditorBrowsable attribute.

Changement de la taille de police dans tous les onglets

Comme demandé, il est désormais possible de modifier la taille de la police dans tous les onglets ouverts simultanément avec +molette de la souris sous macOS ou Ctrl+molette de la souris sous Windows et Linux. Pour activer cette fonctionnalité, accédez à Preferences/ Settings | Editor | General, choisissez Change font size with Command + Mouse Wheel in, puis All editors. Si vous sélectionnez Active editor, le raccourci ne modifiera la taille de la police que dans le fichier sur lequel vous travaillez actuellement.