I. Introduction▲
Microsoft a dévoilé en avril 2019 la version stable de son environnement de développement Visual Studio 2019.
Les environnements de développement intégré (EDI) offrent des outils permettant l'édition du code, le débogage, la génération, etc. d'applications. Parmi les EDI les plus populaires, on retrouve en bonne position Visual Studio, développé par Microsoft.
Visual Studio est un ensemble d'outils de développement permettant de développer différents types d'applications (Windows, Web, Android, iOS, Cloud, etc.), en utilisant de nombreux langages de programmation dont C#, VB.NET, C++, JavaScript et bien plus.
Au fil des versions, Visual Studio est devenu un EDI robuste et peut, selon Microsoft, être « utilisé par n'importe quel développeur, pour mettre en place n'importe quelle application, pour n'importe quelle plate-forme ».
La nouvelle version de l’EDI promet d'accroître la productivité des développeurs, d'offrir un meilleur support du développement d’application moderne et d'améliorer la collaboration entre les membres des équipes de développement.
Cet article présente les nouvelles fonctionnalités de l'environnement de développement vedette de Microsoft.
II. Historique des versions de Visual Studio ▲
II-A. Visual Studio 97▲
C’est en 1997 que Microsoft a lancé la première version de Visual Studio. L’objectif de la firme était de fédérer au sein d’un seul EDI ses différents outils de développement, dont Visual Basic 5.0 et Visual C++ 5.0 destinés au développement d’applications Windows, Visual J++ 1 dédié au développement Java, Visual InterDev pour la programmation Web ASP et Visual FoxPro 5.0 pour la programmation xBase.
II-B. Visual Studio 6.0▲
Un an après la sortie de Visual Studio 97, Microsoft lève le voile sur Visual Studio 6.0. Il s’agit de la dernière version prenant en charge Visual Basic et Visual J++.
II-C. Visual Studio .NET▲
Il aura fallu attendre quatre ans pour voir Visual Studio .NET débarquer sur le marché en 2002. Il s’agit d’une évolution majeure qui est en rupture avec la version précédente.
En effet, c’est à partir de cette version que Microsoft introduit le Framework .NET et le désormais populaire langage de programmation orienté objet C#. La firme présente également VB.NET, une évolution orientée objet de Visual Basic. ASP laisse la place à ASP.NET.
Visual Studio .NET va permettre de développer des applications pour Windows, des applications Web et des applications mobiles.
II-D. Visual Studio 2003▲
Il s’agit d’une évolution mineure publiée le 24 avril 2003 avec la version 1.1 du framework .NET. Elle apportera plus de stabilité, de performances et de sécurité. C’est à partir de cette version que .NET commence à se frayer un passage parmi les développeurs.
II-E. Visual Studio 2005▲
Lancée le 7 novembre 2005, cette version de Visual Studio permet d’utiliser plus facilement les composants du Framework .NET. C’est avec celle-ci que le Framework .NET 2.0 fera ses premiers pas et introduira les génériques, les itérateurs, les types nullables, etc.
II-F. Visual Studio 2008▲
Il s’agit d’une évolution majeure de Visual Studio qui sera publiée le 19 novembre 2008 avec la version 3.5 du Framework .NET. L’outil apporte des indicateurs permettant de calculer les métriques du code (complexité cyclomatique, profondeur d’héritage, lignes de code, couplage des classes et indice de maintenabilité), d’évaluer l’utilisation de la mémoire et le temps d’exécution.
Visual Studio 2008 apporte également des améliorations pour la mise en place des tests, une meilleure prise en charge des fichiers XML et bien plus.
II-G. Visual Studio 2010▲
Avec Visual Studio 2010 qui sera publié le 12 avril 2010, Microsoft lance le Framework 4.0. L’éditeur de code sera réécrit en utilisant WPF et l’EDI permettra de développer des applications Cloud pour Azure. Des améliorations seront apportées au système de débogage et à l'architecture des applications.
Microsoft va adopter avec cette version un nouveau logo plus moderne et procéder à une rationalisation des éditions pour faciliter le choix d’une déclinaison parmi l’ensemble de ses offres.
II-H. Visual Studio 2012▲
Cette version sera marquée par de nombreux changements esthétiques pour s’aligner avec la charte graphique introduite par la nouvelle interface Modern UI (anciennement connue sous le nom de Metro) dédiée aux tablettes.
Un petit détail pour augmenter la lisibilité et l’ergonomie de l’EDI va engendrer cependant la polémique. En effet, l’adoption d’un menu en lettres capitales ne sera pas appréciée par de nombreux développeurs. Ce qui va pousser la firme à se rétracter dans la version suivante.
En dehors de l’aspect esthétique, les nouvelles fonctionnalités importantes seront axées autour de : la planification agile, la qualité, le développement Windows Store, le développement « line-of-business » et l’amélioration de l’expérience générale de développement. Cette version introduira également le développement d’applications Windows RT et Windows Phone 8.
II-I. Visual Studio 2013▲
Visual Studio 2013 sortira le 17 octobre 2013, seulement un an après Visual Studio 2012. L’EDI continuera dans la même lignée que la version précédente et apportera de nouveaux outils de productivité, de profiling, de tests, de collaboration, de contrôles de sources, de gestion du portfolio agile, de suivi du cycle de vie des applications (ALM), de débogage asynchrone pour C#, VB.NET, JavaScript et C++, ainsi que près de 5 000 nouvelles API.
C’est avec cette version que Microsoft fera un pas vers l’open source en sortant l’édition Visual Studio Community : une déclinaison gratuite de l’édition professionnelle pour les petites équipes (au plus 5 développeurs), les étudiants, les chercheurs, les enseignants et pour le développement open source.
II-J. Visual Studio 2015▲
Microsoft va publier la version stable de Visual Studio 2015 le 20 juillet 2015. L’EDI sera accompagné du Framework .NET 4.6.
Visual Studio 2015 introduit une restructuration importante de l’écosystème. L’EDI s’ouvre au développement multiplateforme avec le langage C++. Il dispose d’un émulateur Android, des outils pour le développement avec le framework open source Apache Cordova et prend en charge de nombreux autres outils open source, dont Grunt, Gulp et npm. Il faut noter au passage que Microsoft permettra aux développeurs de porter aisément leurs applications Android et iOS sur Windows 10.
L’environnement supporte le langage de programmation C# 6, VB.NET 12, les spécifications du langage C++, TypeScript ou encore Python.
Pour les développeurs de jeux, Visual Studio 2015 offre une prise en charge des moteurs de jeux Unity, Unreal Engine ou encore Cocos2D. Ce support est le fruit d’un partenariat de la firme avec ces studios de jeux.
L’EDI est la première version qui repose sur le compilateur en tant que service Roslyn. Ce dernier offre un gain de performance important et améliore la productivité, notamment pour les compilateurs C# et VB.NET, l’intelliSense, le refactoring, l’outil CodeLens, le débogage, les outils de diagnostics, etc.
II-K. Visual Studio 2017▲
Microsoft a publié la version stable de Visual Studio 2017 le 7 mars 2017. Cette version marque le 20e anniversaire de l’outil de développement qui a été dévoilé pour la première fois en 1997.
Visual Studio 2017 introduit une nouvelle expérience d’installation avec les charges de travail. Chaque charge de travail représentant un type de développement spécifique (développement Web, développement Azure, développement desktop C++, etc.). Ce qui permet au développeur d’installer uniquement les composants dont il aura réellement besoin. Il faut dire qu’avec le temps, Visual Studio est devenu une véritable usine à gaz permettant de développer tout type d'application : Desktop, Web, Mobile, Cloud, multiplate-forme, etc. Ce qui a alourdi la taille de l'EDI.
Une autre nouveauté intéressante est l’intégration du Live Unit Testing. La fonctionnalité permet de visualiser les résultats des tests unitaires et la couverture du code en direct sur l'éditeur au fur et à mesure que vous écrivez du code.
On va également noter une meilleure prise en charge du Cloud et l’intégration des outils .NET Core pour le développement en utilisant des conteneurs Docker. Par ailleurs, les outils de développement pour Xamarin ont été intégrés de façon native à l’EDI.
Côté langage, la prise en charge de C# 7, Visual Basic .NET 13, F# 4.1, C++11 et C++14, TypeScript 2.1, Python, R, etc. est au rendez-vous.
III. Les éditions de Visual Studio 2019▲
Microsoft a reconduit les mêmes éditions que pour Visual Studio 2017, dont :
- Visual Studio 2019 Entreprise : cette édition est dédiée aux équipes qui ont des exigences élevées en matière de qualité et de volume. Il s'agit de la déclinaison qui dispose de plus de fonctionnalités que les autres. Il s'agit également de celle qui coûte le plus cher ;
- Visual Studio 2019 Professionnel : à destination des équipes plus petites, Visual Studio Professionnel permet de développer des applications de qualité sur des périphériques et des services, à l'aide d'une solution unique et avec une expérience de développement cohérente. L'EDI dispose des outils pour la création des applications natives Windows Store, Windows Mobile, Android, iOS, des applications Office, des applications Web, etc. ;
- Visual Studio 2019 Community : s'adressant aux petites équipes (au plus cinq développeurs), étudiants, enseignants, chercheurs et développeurs des solutions open source, cette édition gratuite dispose pratiquement des mêmes fonctionnalités que l'édition professionnelle.
Le tableau ci-dessous donne un comparatif des différences de fonctionnalités entre les éditions de Visual Studio.
IV. Configuration système requise ▲
IV-A. Système d'exploitation ▲
Visual Studio 2019 s'installe et s'exécute sur Windows 10 (Famille, Professionnel et Entreprise), Windows Server 2016 (Standard et Datacenter), Windows 8.1 (Standard, Professionnel et Entreprise), Windows Server 2012 R2 (Essentials, Standard, Datacenter) et Windows 7 SP 1 (Familiale Premium, Professionnel, Entreprise, Intégrale).
IV-B. Matériel▲
La machine sur laquelle l'EDI s'exécute doit disposer au minimum d’un processeur de 1,8 GHz, de 2 Go de RAM (4 Go recommandés), d’un espace disque de 1 à 40 Go selon les fonctionnalités installées et d’une carte vidéo prenant en charge une résolution d'écran minimale de 720p.
Langues supportées
Visual Studio 2019 est disponible en quatorze langues, dont l'anglais, le français, l'italien, l'allemand, l'espagnol, le japonais, le russe, le portugais, etc.
V. Améliorations de l’IU▲
V-A. Interface de démarrage▲
Premier fait marquant dans cette nouvelle version : l’interface de démarrage. Cette dernière a une fois de plus droit à un lifting complet. Au lancement de l’EDI, une fenêtre minimaliste s’affiche avec une agrégation des sources possibles pour accéder au code. L'objectif est de permettre aux développeurs, quel que soit l’emplacement ou le moyen utilisé pour la sauvegarde de code source, d’y accéder rapidement.
L'interface de démarrage ne fait désormais plus partie de l’interface principale de l’EDI. Il s’agit d’une fenêtre autonome, qui apparaît avant le chargement de l’EDI. Cette orientation permet non seulement de gagner en performance, car le chargement de l’EDI sera en quelque sorte conditionné par le choix de l’utilisateur, mais aussi d’avoir une interface de démarrage moins encombrée par les éléments de l’EDI, dont le menu et les explorateurs.
La tuile contenant des informations pour les développeurs et les guides pour la prise en main disparaissent pour donner plus d’espace aux éléments désormais affichés au démarrage.
On va noter avec satisfaction l’intégration en première ligne d’une carte “Cloner ou extraire du code”. Cette dernière va permettre de directement cloner son code depuis un dépôt distant, dont GitHub ou encore Azure DevOps. Les options traditionnelles permettant d’ouvrir un projet ou une solution, ouvrir un dossier local ou encore créer un nouveau projet sont bien évidemment présentes.
À gauche sont listés les éléments qui ont été récemment ouverts. On va noter la présence, bien que moins visible, d’un lien permettant d’ouvrir l’EDI sans code.
Cette nouvelle interface va convenir autant aux débutants qu’aux utilisateurs expérimentés.
V-B. Interface de création d’un nouveau projet▲
L’interface de création d’un nouveau projet a été également totalement repensée. Elle s’affiche avant le chargement de l’EDI si vous sélectionnez directement cette option dans l’interface de démarrage. Il faut noter que le même principe a été appliqué à tous les autres éléments de la tuile “Prise en main”. Ce qui permet de passer rapidement d’une option à l’autre avant le chargement de l’EDI.
Avec tous les langages, projets et plates-formes supportés par Visual Studio, il était temps d'offrir un moyen de trouver rapidement le modèle de projet que l’on souhaite créer.
Avec la nouvelle interface, vous pouvez effectuer une recherche du modèle de projet qui vous intéresse à partir du titre, de la description ou des tags. L’option de filtre en complément permet de sélectionner en fonction des langages, de la plate-forme et du type de projet.
Par ailleurs, la liste des 10 derniers modèles de projet utilisés apparaît dans le volet de gauche pour faciliter encore plus l’accès.
L’assistant de création de projets a été séparé dans deux pages. Ceci pour permettre de se concentrer sur une chose à la fois :
- la sélection du modèle de projet ;
- le choix du nom de projet, de la solution et de l’emplacement de sauvegarde.
V-C. Recherche avancée▲
Visual Studio 2019 intègre une nouvelle expérience de recherche avancée assez pratique. Elle permet de rechercher des éléments dans les menus, les commandes, les options et les composants installables. La nouvelle fonctionnalité de recherche affiche désormais les résultats de façon dynamique, gère les fautes d’orthographe et retourne des informations utiles (par exemple, les raccourcis clavier) dans les résultats de la recherche.
À partir de cette zone de recherche, vous pouvez accéder directement à l’interface de création d’un nouveau projet.
VI. Visual Studio Live Share▲
Visual Studio Live Share est sans doute la fonctionnalité vedette de cette version de Visual Studio. Il s’agit d’une nouvelle fonctionnalité qui avait été présentée il y’a quelque temps déjà par Microsoft, comme une extension pour Visual Studio 2017 et Visual Studio Code. La fonctionnalité a été intégrée en natif avec Visual Studio 2019. Elle est disponible pour toutes les éditions de l’EDI.
Live Share est une puissante fonctionnalité collaborative qui permet à plusieurs développeurs de travailler sur la même base de code, sans avoir besoin d’être assis devant le même poste comme on le fait en mode programmation par binôme traditionnel.
L’outil est assez simple à utiliser. Un développeur, une fois connecté en utilisant son compte Microsoft ou GitHub, doit démarrer la session sur son poste en cliquant sur le bouton Live Share dans Visual Studio. L’EDI va démarrer la session et copier automatiquement l’URL unique de session dans son presse-papier. Ce développeur pourra ensuite envoyer le lien en question pour inviter les autres développeurs à collaborer.
Les développeurs invités auront juste à ouvrir l’URL dans leur navigateur pour rejoindre la session en utilisant un EDI dans lequel Live Share est installé.
Une fois qu’un développeur a rejoint une session, une notification est affichée dans Visual Studio pour informer celui qui a démarré la session et le curseur de l’invité est affiché dans le fichier ouvert.
Tous les invités commencent par suivre celui qui a démarré la session. Au fur et à mesure que celui-ci fait défiler les fichiers auxquels il accède, les invités suivent ses actions. Cela facilite leur orientation vers le problème/la question/la tâche sur lequel/laquelle vous allez collaborer.
Aucune configuration supplémentaire n’est nécessaire. Le contexte multifichiers du projet est cloné dans votre environnement.
Live Share offre les fonctionnalités collaboratives suivantes :
- modification en direct : créez et modifiez du code en collaborant en temps réel ;
- concentration et suivi : attirez l’attention sur votre curseur ou suivez la navigation d’autres personnes ;
- débogage en groupe : définissez des points d’arrêt et parcourez le code ensemble ;
- serveurs partagés : affichez les applications et bases de données sans exposer les ports sur Internet ;
- appels audio : communiquez vocalement avec les autres au sein même de votre outil ;
- terminal partagé : exécutez des commandes et des tâches en diffusant la sortie aux membres de l’équipe.
Les options de configuration (Outils->Options->Live Share) permettent d’adapter l’outil à votre besoin. Vous pouvez par exemple décider d’autoriser explicitement toute personne qui rejoint la session, d’autoriser ou non le débogage par l’invité, de partager la build, etc.
La session est actuellement limitée à cinq développeurs. L’outil prend en charge tous les types d’applications et les langages qui sont supportés par Visual Studio.
VII. Pull Request pour Visual Studio▲
Une autre fonctionnalité collaborative dévoilée avec Visual Studio 2019 est Pull Request pour Visual Studio (demande de tirage pour Visual Studio). Cette dernière n’est pas intégrée par défaut à l’EDI, elle est disponible comme une extension.
Les demandes de tirage sont très utilisées dans les projets sous Git. C’est d’ailleurs même recommandé de procéder ainsi pour fusionner ses modifications avec le dépôt distant. En effet, un développeur travaillant sur un projet qui utilise le gestionnaire de version Git, doit cloner le dépôt distant sur son poste local. Une fois que les changements apportés par celui-ci sont terminés, il doit faire une demande de tirage pour que son code soit fusionné. L’administrateur du projet ou toute personne à qui la demande de tirage est assignée et qui a les droits, peut faire une revue de code sur la demande de tirage, avant de procéder à la fusion.
Visual Studio intègre depuis plusieurs années la prise en charge de Git. Toutefois, il n'était pas possible à partir de l’interface de l’EDI de créer directement une demande de tirage ou de procéder à une revue sur une demande de tirage existante. C’est ce à quoi Microsoft veut remédier avec l’extension Pull Request pour Visual Studio. Son installation permet d’ajouter le bouton « Requêtes de tirage » dans Team Explorer.
Un clic sur ce bouton et vous accédez à la fenêtre principale de l’extension. À partir de cette fenêtre, vous pouvez créer une nouvelle demande de tirage, rechercher une demande de tirage avec son ID, visualiser la liste des demandes de tirage que vous avez créées et celles qui vous ont été assignées.
VII-A. Création d’une nouvelle demande de tirage▲
À la création d’une nouvelle demande de tirage, vous pouvez choisir la branche source et la branche de destination, marquer votre demande comme urgente, assigner la demande à une personne pour la revue et même ajouter les tâches correspondantes au travail que vous avez effectué.
VII-B. Revue d’une demande de tirage▲
Une fois que vous sélectionnez une demande de tirage, les détails sur celle-ci sont affichés dans Visual Studio.
Vous pouvez comparer dans Visual Studio les modifications qui ont été apportées au code et même y ajouter des commentaires avec des émoticônes. Les commentaires sont créés en Markdown. Il est également possible d'exécuter et déboguer le code en question dans votre IDE.
Une fois la revue terminée, vous pouvez approuver la demande, la mettre en attente d’une réponse de l’auteur, rejeter la demande, etc. Une fois la demande approuvée, elle est fusionnée dans la branche de destination.
La fonctionnalité supporte uniquement GitHub et Azure DevOps. Azure DevOps Server n’est pas encore pris en charge.
VIII. Visual Studio IntelliCode▲
L’intelligence artificielle devient de plus en plus présente dans notre quotidien, avec pour objectif de nous simplifier la vie. C’est au tour de Visual Studio et Visual Studio Code de bénéficier de l’intelligence artificielle pour améliorer la productivité des développeurs avec Visual Studio IntelliCode.
Il s’agit d’une nouveauté disponible sous forme d’une extension pour Visual Studio 2019, Visual Studio 2017 et Visual Studio Code. Elle permet aux développeurs d’être assistés par l’intelligence artificielle pendant l’écriture du code. Ceux-ci peuvent donc écrire du code en toute confiance, détecter les problèmes plus rapidement et procéder à des révisions ciblées.
Selon Microsoft, IntelliCode vous fait gagner du temps en plaçant ce que vous êtes le plus susceptible d’utiliser en tête de votre liste de saisie semi-automatique. Les suggestions IntelliCode reposent sur des centaines de projets open source sur GitHub, chacun avec plus de 100 étoiles. Combinée avec le contexte de votre code, la liste de saisie semi-automatique est adaptée pour promouvoir les pratiques courantes.
IntelliCode n’est pas limité à la saisie semi-automatique des instructions. L’aide sur les signatures recommande également la surcharge la plus probable pour votre contexte.
Pour les utilisateurs de C#, en plus de fournir des suggestions de membres, IntelliCode fournit également la complétion des arguments. Cette fonctionnalité, qui est actuellement en préversion, marque d’une étoile les noms des arguments les plus probables que vous allez utiliser quand vous appelez une méthode et place ces suggestions en haut de la liste des complétions. La liste des complétions apparaît quand vous commencez à taper dans les parenthèses ou que vous appuyez sur Ctrl+Barre d’espace.
IntelliCode supporte les langages C#, C++, Java, Python, XAML, JavaScript/TypeScript. Plusieurs fonctionnalités sont encore au stade de préversion.
VIII-A. Inférence du style du code▲
Pour le langage C#, IntelliCode peut inférer vos conventions de style et de mise en forme du code pour créer dynamiquement un fichier EditorConfig. Les fichiers EditorConfig aident à assurer la cohérence du code en définissant des styles et des mises en forme de code. Ces conventions permettent à Visual Studio d’offrir des correctifs de format et de style automatiques pour nettoyer votre document.
Le fichier EditorConfig peut être ajouté au niveau d’un projet ou d’une solution dans Visual Studio (Clic droit sur le projet ou la solution dans Visual Studio, puis sur Ajouter et ensuite sur Nouvel EditorConfig.)
Une fois le fichier ajouté, IntelliCode le remplit automatiquement avec les conventions de style de code qu’il déduit de votre code base.
VIII-B. Modèles personnalisés pour C#▲
Pour les développeurs utilisant C#, les modèles personnalisés sont offerts par IntelliCode. Ils permettent d’obtenir des recommandations d’IntelliSense assisté par IA, recommandations basées sur votre code C#. Les modèles personnalisés sont utiles si vous utilisez du code comme des bibliothèques de classes de base et d’utilitaires internes ou comme des bibliothèques spécifiques à un domaine, qui ne sont pas couramment utilisées dans du code open source.
En effet, les recommandations du modèle de base d’IntelliCode sont basées uniquement sur les modèles appris à partir de dépôts GitHub open source. Si vous utilisez du code qui n’est pas dans cet ensemble de dépôts, ces recommandations ne sont pas aussi utiles pour vous. Pour les utilisateurs de C#, IntelliCode peut apprendre des modèles à partir de votre code pour faire des recommandations concernant des éléments qui ne sont pas dans le domaine open source.
Cependant, il est de votre responsabilité de créer et d'entraîner votre modèle personnalisé. Une interface graphique est offerte dans Visual Studio pour permettre de créer et entraîner votre modèle dans le Cloud. Concrètement, les caractéristiques du code seront extraites de votre solution et seront transmises via HTTPS au service IntelliCode. Le service utilise ensuite des algorithmes de machine learning pour entraîner un modèle pour votre code. Il retourne le modèle à votre ordinateur, où il est fusionné avec le modèle de base. Plus les données extraites de votre solution seront nombreuses, plus la précision de votre modèle sera élevée.
VIII-C. Partage de modèles personnalisés▲
IntelliCode a une fonctionnalité de partage de modèle qui vous permet de partager n’importe quel modèle que vous avez créé avec des personnes à qui vous fournissez un lien vers un modèle. De plus, les utilisateurs qui ont accès au modèle partagé reçoivent automatiquement les dernières mises à jour quand vous entraînez de nouveau le modèle.
Pour intégrer un modèle partagé, il suffit juste de saisir le lien dans la fenêtre « Ajouter un modèle » à partir de l’interface de gestion des modèles personnalisés d’IntelliCode.
Cette fonctionnalité, bien qu'intéressante, apporte des interrogations sur la confidentialité, vu que des données de votre solution sont extraites et envoyées dans le Cloud de Microsoft. Mais, la firme assure que le transfert est sécurisé via HTTPS et qu’uniquement les éléments nécessaires à la création d’un modèle sont extraits.
IX. Prise en charge des conteneurs▲
Les conteneurs sont devenus un moyen fiable pour la distribution d’applications. Depuis Visual Studio 2017, Microsoft offre la prise en charge des conteneurs via des outils de développement pour Kubernetes. Toutefois, la fonctionnalité était disponible via une extension que le développeur devait installer.
Avec Visual Studio 2019, Microsoft offre une prise en charge de première classe des conteneurs. La fonctionnalité est directement intégrée en natif à l’outil de développement. Elle est disponible avec la charge de travail développement Azure.
IX-A. Création d’un nouveau projet avec les outils pour Kubernetes.▲
Un nouveau modèle de projet est disponible pour permettre la création de nouvelles applications ASP.NET Core s’exécutant dans Kubernetes. Une simple recherche avec le terme kubernetes permet de retrouver le modèle dans la fenêtre de création d’un nouveau projet.
Lorsque vous sélectionnez ce modèle à la création d’un nouveau projet, Visual Studio crée automatiquement un fichier Dockerfile et un graphique Helm que vous pouvez utiliser pour générer et déployer votre nouvelle application sur un cluster Kubernetes. Vous pouvez modifier ses artefacts en fonction de vos besoins.
IX-B. Ajout du support de Kubernetes aux projets existants▲
Si vous disposez d’une application ASP.NET Core existante et que vous souhaitez ajouter la prise en charge de kubernetes, il suffit dans l’Explorateur de solutions, de cliquer avec le bouton droit sur le projet, puis sur Ajouter, ensuite sur Prise en charge d’orchestrateur de conteneurs.
Dans la boîte de dialogue Ajouter la prise en charge d’orchestrateur de conteneurs, choisissez Kubernetes/Helm et cliquez sur OK.
Par ailleurs, Visual Studio 2019 offre un assistant permettant de facilement ajouter un endpoint à votre application. Cette option permet d’ajouter à Helm les configurations nécessaires afin que votre application soit visible dans un cluster Kubernetes.
IX-C. Débogage dans Azure avec Azure Dev Spaces▲
Grâce à la prise en charge d’Azure Dev Spaces, il sera possible, pour les utilisateurs d’Azure Kubernetes Services, de déboguer leur application en utilisant leur cluster actif sur le Cloud de Microsoft. Concrètement, dans votre cluster, vous avez couramment de petites applications (microservices), qui fonctionnent ensemble pour répondre à vos besoins. Pour déboguer l’application actuelle sur laquelle vous travaillez, vous aurez peut-être besoin des autres applications qui sont exécutées dans votre cluster. Azure Dev Spaces vous permet d’atteindre cet objectif sans avoir besoin de répliquer et exécuter toutes vos applications localement.
Pour utiliser cette fonctionnalité, vous devez sélectionner Azure Dev Spaces au moment de lancer le débogage de votre application.
Comme vous l’avez probablement remarqué, cette fonctionnalité n’est disponible que pour des clusters sur Azure. Si votre cluster Kubernetes est chez un autre fournisseur de Cloud, vous ne pourrez pas tirer avantage de cette fonctionnalité.
X. Débogage et diagnostic▲
X-A. Point d'arrêt des données▲
Cette fonctionnalité qui était uniquement disponible pour les développeurs C++ a été étendue à NET Core. Les points d'arrêt de données sont très pratiques pour trouver où un objet global est modifié, ajouté ou supprimé dans une liste par exemple. Elle représente une bonne alternative aux points d'arrêts traditionnels dans certains scénarios.
Il faut noter que cette fonctionnalité a été réclamée par de nombreux développeurs. On va regretter néanmoins que sa prise en charge ne soit étendue qu'à .NET Core.
X-B. Recherche tout en déboguant▲
L’inspection d’un objet dans la fenêtre d’espion peut s'avérer assez frustrant, surtout lorsque plusieurs objets et propriétés enfants sont inclus, car il faut exploser les objets, scroller, etc. Avec la nouvelle fonctionnalité de recherche, tout en déboguant, vous pouvez rapidement accéder à l’objet et aux valeurs qui vous intéressent en effectuant une recherche.
Cette fonctionnalité a été ajoutée dans les fenêtres Espion, Variables et Automatique.
X-C. Débogueur de capture instantanée▲
Le débogueur de capture instantanée est une fonctionnalité permettant de déboguer une application qui s'exécute en production dans le Cloud. Cette fonctionnalité permet au développeur de définir des points d’ancrage et de journalisation dans son code, ce qui permettra au débogueur d’effectuer une capture instantanée de l’application s'exécutant en production à ces endroits, sans toutefois impacter l’application, qui continue à s'exécuter normalement.
Cette fonctionnalité avait été intégrée depuis Visual Studio 2017. Avec Visual Studio 2019, elle a été étendue pour supporter les applications ASP.NET qui s’exécutent sur les machines virtuelles Azure. Il faut noter qu’elle prend uniquement en charge Azure et qu’elle est disponible avec Visual Studio entreprise. De quoi réduire son intérêt.
À ces fonctionnalités phares, s’ajoutent :
- le débogage des applications volumineuses à l’aide de très nombreux modules et fichiers PDB ;
- l’ouverture de Google Chrome avec des arguments personnalisés pour déboguer les applications JavaScript dans Visual Studio ;
- la prise en charge des visualiseurs DataSet personnalisés pour .NET Core.
XI. Prise en charge du développement mobile avec Xamarin▲
Les outils de développement Visual Studio pour Xamarin ont eu droit à de nombreuses modifications pour améliorer les performances, la productivité et l'expérience de développement mobile des utilisateurs. La plate-forme de développement multiplateforme pour Android, iOS et Windows, bénéficie entre autres :
- d’une cure d’amaigrissement de la charge de travail Xamarin. Elle a désormais une taille de 7,69 Go. Ce qui représente une réduction de moitié par rapport à Visual Studio 2017 version 15.9 ;
- d’améliorations de performances qui ont été apportées pour diminuer la durée nécessaire à la création d’un projet Xamarin. Ceci a été rendu possible grâce à l’inclusion des packages NuGet utilisés par les modèles dans le cadre de l’installation de la charge de travail, afin de réduire la durée de restauration de packages à la génération ;
- d’un nouvel indicateur de progression qui permet de voir des informations plus détaillées sur la progression de la génération des projets ;
- d’une évolution qui permet, lors de la modification des fichiers XAML, de ne plus avoir à générer son projet pour voir les changements de l’interface dans le générateur d'aperçu XAML de Xamarin.Forms ;
- il est désormais possible de permuter entre différents appareils Android et iOS pour afficher un aperçu du code XAML Xamarin.Forms grâce au nouveau menu déroulant d’appareil.
Plusieurs autres changements touchent de façon spécifique le développement Android avec Xamarin. Il s’agit :
- des améliorations de l'émulateur Android pour faciliter la création des images de l'émulateur ;
- des optimisations de Xamarin.Android pour réduire la durée des générations ;
- des améliorations du déploiement rapide pour Xamarin.Android et bien plus.
XII. Support de la plateforme .NET (Framework .NET, .NET Core, ASP.NET, etc.)▲
XII-A. .NET Core▲
XII-A-1. .NET Core 3.0▲
Il est possible de créer des projets ASP.NET Core, des applications consoles et des bibliothèques de classes qui ciblent .NET Core 3.0. À condition quand même d’avoir installé le SDK et coché l’option pour utiliser ce dernier dans les options de configuration de l’EDI.
Il faut noter que .NET Core 3.0 est encore au stade de préversion. C’est pourquoi l’outil doit être activé de façon implicite par l’utilisateur dans la version stable de l’EDI.
La nouveauté majeure de cette version est la prise en charge de Windows Forms et WPF pour la création des applications de bureau Windows. Les modèles de projet concernant ceux-ci ne sont pas encore offerts. Vous pouvez toutefois utiliser la commande dotnet new pour créer un projet Windows Forms ou WPF avec .NET Core 3.0 et l’ouvrir dans Visual Studio.
XII-A-2. Édition du fichier de projet▲
Le fichier de projet .csproj est traité comme un type de fichier de première classe dans Visual Studio. Il sera désormais possible de double-cliquer sur un nœud de projet pour ouvrir le fichier de projet dans l'éditeur de code, rechercher un fichier de projet par nom avec « Atteindre tout » (ctrl + T), ouvrir le fichier de projet à partir de la liste d'erreurs si une erreur de création de projet est déclenchée.
XII-A-3. Amélioration des performances▲
En ce qui concerne les performances pour les projets .NET Core, on va essentiellement noter :
- la scalabilité des solutions de grande taille a été considérablement améliorée, autorisant l’utilisation de solutions .NET Core beaucoup plus grandes qu’auparavant ;
- les temps de chargement des solutions pour les grands projets ont considérablement diminué, tout comme l’utilisation du processeur et de la mémoire lors de leur chargement.
XII-B. ASP.NET▲
En ce qui concerne la plate-forme de développement Web ASP.NET, de nombreuses optimisations ont été apportées dont les plus importantes sont :
- l’ajout d’une nouvelle section « Dépendances » dans la page de synthèse de profil de publication pour Azure App Service, permettant d’associer des ressources Stockage Azure et SQL Azure à votre instance de service d’application ;
- le support d’Azure Kubernetes pour ASP.NET Core ;
- le support du débogage des applications ASP.NET Core qui utilisent Alpine comme image de base ;
- le support des images ASP.NET et .NET Core les plus récentes pour les applications conteneurisées ;
- la possibilité d’utiliser la fonctionnalité « Rechercher toutes les références » (Maj+F12) et CodeLens pour afficher les résultats de la recherche dans les fichiers Razor (.cshtml) dans des projets .NET Core.
XIII. Support des langages de programmation▲
Toute nouvelle version de Visual Studio est l'occasion d'offrir une meilleure prise en charge des plus récentes versions des langages de programmation.
XIII-A. Support de C#▲
Les multiples évolutions mineures de C# 7 depuis la sortie de Visual Studio 2017 et de cette version ont permis à Microsoft de constater un problème : le fait de marquer la dernière version principale du langage comme langage par défaut pour l’EDI, pouvait être une source de frustration pour de nombreux développeurs, qui veulent exploiter les nouveautés des versions mineures.
Trois versions mineures de C# 7 (C# 7.1, 7.2 et 7.3) ont été publiées depuis la sortie de Visual Studio 2017. Mais, les nouveaux projets utilisaient toujours par défaut C# 7.0. Pour chaque nouveau projet, le développeur devait donc modifier manuellement la version du langage pour pouvoir exploiter les évolutions mineures de C# 7.
Avec Visual Studio 2019, le langage par défaut est déterminé par la version du Framework cible :
- pour un projet .NET Core 3.0 Preview, la version par défaut de C# est la 8.0 Preview ;
- pour un projet ciblant le Framework .NET ou autre en dehors de .NET Core 3.0 Preview, C# 7.3 est utilisé comme langage par défaut.
Toutefois, si vous souhaitez préfixer un langage par défaut par le biais de LangVersion dans un fichier projet ou un fichier de propriétés, cette version du langage remplace la valeur par défaut décrite précédemment.
Vous pouvez déjà commencer à expérimenter les nouveautés de C# 8.0, bien que ce dernier soit encore en préversion.
Les nouveautés de cette version du langage de programmation sont décrites ci-après.
XIII-A-1. La prise en charge des types références nullables▲
Il s’agit de l’une des nouveautés importantes de C# 8, mais aussi de l’une des plus controversées. L’objectif des types de références nullables est de corriger de nombreux bogues à la compilation et plus encore à l'exécution.
De ce fait, par défaut, les types références, donc string, ne seront plus nul. Ce qui aura des conséquences sur le code existant, car l’assignation du nul à un type référence qui était permise ne l’est plus.
Cependant, il sera possible implicitement de définir un type référence comme nullable pour maintenir le comportement actuel.
Par ailleurs, pour éviter de briser le code existant, cette nouveauté ne générera que des avertissements et non des erreurs. De ce fait, un code propre aujourd’hui peut se retrouver avec de nombreux avertissements demain.
C’est pourquoi, avec Visual Studio 2019, le choix de l’activation de cette fonctionnalité au niveau du compilateur est laissé au développeur.
La fonctionnalité peut être activée en ajoutant la balise <NullableContextOptions>enable</NullableContextOptions> au niveau du fichier du projet ou #nullable enable dans un code. À ce moment, les types référence sont traités comme Nullable s’ils sont annotés avec ? et comme non-Nullable dans le cas contraire. Le compilateur analyse ensuite où circulent les valeurs nulles et affiche des avertissements relatifs aux cas d’usage potentiellement non sécurisés.
Pour en savoir plus sur les types de références nullables, veuillez consulter le billet de blog suivant : https://www.developpez.net/forums/blogs/990351-francois-dorin/b4982/retour-proposition-csharp-8-references-nullables/
XIII-A-2. Support de l’expression switch▲
Cette fonctionnalité permet d’utiliser une syntaxe d’expression plus concise, comprenant moins de mots clefs case et break répétitifs et moins d’accolades :
public
string
NouveauSwitch
(
int
valeur)
{
return
valeur switch
{
1
=>
"Case 1"
,
2
=>
"Case 2"
,
3
=>
"Case 3"
,
_ =>
"Default"
};
}
//Versions précédentes du langage avec le switch classique
public
string
SwitchClassique
(
int
valeur)
{
switch
(
valeur)
{
case
1
:
return
"Case 1"
;
case
2
:
return
"Case 2"
;
case
3
:
return
"Case 3"
;
default
:
return
"Default"
;
};
}
XIII-A-3. Les flux asynchrones ▲
Le nouveau IAsyncEnumerable<T> permet d’introduire une version asynchrone de IEnumerable. Ceci sera très pratique pour l’utilisation des flux continus de résultats, tels que ceux obtenus d'un appareil IoT ou d'un service cloud :
async
IAsyncEnumerable<
int
>
GetBigResultsAsync
(
)
{
await
foreach
(
var
result in
GetResultsAsync
(
))
{
if
(
result >
20
) yield
return
result;
}
}
XIII-A-4. Critères spéciaux récursifs▲
Plusieurs nouveaux modèles ont été ajoutés, dont les modèles de propriétés, les modèles positionnels et les modèles tuples.
Pour en savoir plus sur les nouveautés de C# 8, consultez l’article suivant :
https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-8
XIII-B. Les améliorations pour C++▲
XIII-B-1. Le langage C+++▲
Les développeurs C++ pourront tirer parti de la fonctionnalité collaborative Visual Studio Live Share, qui offre désormais une prise en charge du langage.
Initialement, seul C# était pris en charge dans la préversion de l’extension IntelliCode pour Visual Studio. Avec Visual Studio 2019, C++ et XAML sont désormais pris en charge. L’IntelliCode pour C++ est encore plus performant quand vous utilisez des bibliothèques populaires comme STL.
Plusieurs modèles C++ de projet ont été renommés et la description de certains ont changé en raison de la mise à jour de la boîte de dialogue « Nouveau projet ».
Le composant expérimental Clang/C2 a été supprimé. Désormais, les développeurs doivent utiliser l’ensemble d’outils MSVC pour garantir une totale conformité aux normes C++ avec /permissive- et/ou /std:c++17, ou la chaîne d’outils Clang/LLVM pour Windows.
En ce qui concerne Android C++, les kits de développement Android SDK 25 et Android NDK 16b sont utilisés par défaut.
XIII-B-2. Productivité▲
Visual Studio 2019 apporte les améliorations de productivité suivantes pour les développeurs C++ :
l’analyse du code s’exécute désormais automatiquement en arrière-plan. Les avertissements sont marqués par des tildes verts dans l’éditeur à mesure que la saisie est effectuée ;
- la barre de modèles utilise maintenant l’interface utilisateur de la fenêtre d’aperçu plutôt qu’une fenêtre modale ;
- un correctif automatique pour l’avertissement d’analyse du code NULL->nullptr (C26477 USE_NULLPTR_NOT_CONSTANT) est disponible par le biais du menu « Ampoule » sur les lignes correspondantes, activé par défaut dans l’ensemble de règles C++ Core Check pour Type ;
- les en-têtes précompilés ne sont plus générés par défaut pour les applications de bureau et console C++ ;
- le fait de pointer sur une accolade fermante d’un bloc de code, fournit des informations utiles sur le contexte de ce bloc ;
- la prise en charge dans ConcurrencyChecker des types STL connus à partir de l’en-tête <mutex> a été ajoutée ;
- une implémentation partielle mise à jour du vérificateur de profil de durée de vie est disponible pour la détection des références et des pointeurs non résolus ;
- la prise en charge initiale dans le compilateur de l’opérateur C++20 <=>pour la triple comparaison a été ajouté.
XIII-B-3. CMake ▲
Le moteur de production open source multiplateforme permettant de construire, tester et créer des packages de logiciels, bénéficie également d’un meilleur support pour accroître la productivité des développeurs utilisant l’outil. On va noter entre autres :
- des améliorations des performances d’IntelliSense pour les fichiers C++ dans les projets Cmake ;
- l’aide de Visual Studio pour démarrer votre développement en C++ avec CMake sur Linux en détectant si vous avez une version compatible de CMake sur votre ordinateur Linux. Si ce n’est pas le cas, il propose de l’installer pour vous ;
- l’éditeur de paramètres CMake qui fournit une alternative à CMakeSettings.json et offre une parité avec CmakeGUI ;
- la suppression du menu CMake pour une parité plus proche avec les projets et solutions ;
- la détection et l’activation automatique de la chaîne d’outils vcpkg pour les projets CMake qui sont ouverts dans l’IDE, une fois que vcpkg integrate install a été exécuté. Ce comportement peut être désactivé en spécifiant un fichier de chaîne d’outils vide dans cmakesettings ;
- la faculté de traiter les avertissements d’analyse statique en arrière-plan et de les afficher dans l’éditeur pour les projets Cmake ;
- la prise en charge du paramètre « cmakeToolchain » dans « CMakeSettings » pour spécifier des chaînes d’outils sans modifier manuellement la ligne de commande Cmake.
XIII-C. F#▲
Visual Studio 2019 apporte plusieurs nouveautés et améliorations pour les développeurs F#. Les outils F# ont eu droit à de nombreux correctifs.
XIII-C-1. Support de F# 4.6▲
Visual Studio 2019 offre une prise en charge de la version 4.6 du langage de programmation fonctionnel.
La nouveauté phare de cette version est la prise en charge des types d’enregistrements anonymes ce qui facilite l’utilisation des enregistrements dans de nombreux contextes.
XIII-C-2. Améliorations de performance pour F#▲
Les développeurs F# remarqueront des améliorations de performances pour les grandes et moyennes solutions dans Visual Studio 2019. Des correctifs et changements apportés aux outils F# permettent d’obtenir un gain de performance. Il s'agit :
- de la réorganisation de la manière dont le service de langage F# est initialisé par Roslyn ;
- d’un changement dans la façon de représenter du texte source qui permet d’éviter les allocations importantes au fil du temps, surtout avec les fichiers volumineux ;
- des changements qui ont été apportés aux caches de build pour les petites modifications apportées aux fichiers, afin d’utiliser moins de mémoire ;
- des modifications de l’IntelliSense pour qu’il n’affiche plus les symboles des espaces de noms non ouverts par défaut. Cela améliore notamment les performances d’IntelliSense dans les projets contenant de nombreuses références. Vous pouvez réactiver cette fonctionnalité dans les paramètres par le biais de « Outils > Options > Éditeur de texte > F# > IntelliSense » ;
- des optimisations qui ont été apportées sur l’utilisation de la mémoire quand des fournisseurs de types sont utilisés pour générer de très grandes quantités de types fournis dans une liste de saisie semi-automatique.
XIII-D. Python▲
Le langage de programmation Python bénéficie d’une meilleure prise en charge avec Visual Studio 2019. On va noter entre autres :
- l’intégration d’une nouvelle boîte de dialogue qui simplifie la création et l’ajout d’environnements virtuels et conda dans votre projet ;
- le fait que le programme d’installation de Visual Studio n’installe plus les versions complètes d’Anaconda pour réduire la taille des installations de Visual Studio et éviter les erreurs potentielles pendant les mises à niveau ;
- le fait que Miniconda est désormais fourni avec la charge de travail Python en tant que composant facultatif, ce qui permet de créer des environnements conda sans avoir à installer Miniconda/Anaconda ;
- la présence d’une nouvelle barre d’outils « Environnements Python » disponible lors de la modification des fichiers Python. Cette nouvelle barre d’outils vous permet de basculer entre différents interpréteurs Python quand vous travaillez avec des projets et des espaces de travail.
XIII-E. JavaScript/TypeScript▲
En ce qui concerne le langage de script JavaScript, Microsoft a ajouté la prise en charge de l’activation du débogage JavaScript dans les tests unitaires dans les projets Node.js. Cette fonctionnalité était très demandée par les utilisateurs de Node.js. Le service de langage JavaScript hérité n’est plus disponible. Les utilisateurs avaient auparavant la possibilité de restaurer ce service de langage. Ils disposent maintenant d’un nouveau service de langage JavaScript intégré. Ce nouveau service de langage est basé sur le service de langage TypeScript, qui repose sur l’analyse statique. Cela améliore les performances des outils, et votre code JavaScript bénéficie de fonctionnalités IntelliSense plus riches, basées sur l’acquisition des définitions de type. Le nouveau service est léger et consomme moins de mémoire que le service hérité, offrant ainsi aux utilisateurs de meilleures performances quand leur code grossit.
Les deux langages bénéficient d’améliorations de performances dans le service de langage suite à l’augmentation de la limite de mémoire sur le service de langage, afin de gérer les projets volumineux. De plus, le service de langage JavaScript/TypeScript sera désormais chargé automatiquement dans les projets où le package NuGet TypeScript ou le package npm sont installés
XIV. Autres nouveautés▲
XIV-A. Contrôle de code source et Team Explorer▲
Les outils Git de Team Explorer offrent désormais une prise en charge du remisage (stash). Ce qui va permettre aux développeurs utilisant Git, de stocker temporairement les modifications apportées, le temps de travailler sur une autre tâche.
Team Explorer offre une nouvelle expérience d’utilisation des éléments de travail Azure DevOps qui est axée sur les flux de travail du développeur : les vues d’éléments de travail des utilisateurs, la création de branches à partir d’un élément de travail, la recherche d’éléments de travail avec #mentions et bien plus.
XIV-B. Extensibilité▲
Les modèles de projet VSIX utilisés pour la création des extensions pour Visual Studio, ont été mis à jour pour inclure la classe AsyncPackage qui permet le chargement des packages en arrière-plan.
Un nouveau modèle de projet VSIX a été ajouté pour ceux qui préfèrent démarrer à partir de zéro.
Avec Visual Studio 2019, il est possible de savoir si une extension est gratuite, payante ou en version d’essai, depuis la liste des extensions.
Un seul SDK est désormais offert pour la création des extensions, il est disponible via le gestionnaire de packages NuGet. Il s’agit du package Microsoft.VisualStudio.SDK.
XIV-C. Plateforme Windows universelle (UWP)▲
La plateforme Windows Universelle n’est pas en reste et a aussi eu droit à son lot d’améliorations et nouveautés dont :
- la possibilité de conserver les commentaires, l’espacement, les espaces de noms et tous les autres changements apportés au texte quand vous effectuez des modifications à partir du concepteur ;
- la prise en charge de .NET Core par l’assistant de création des packages d’applications Windows et la possibilité de générer des packages au format MSIX ;
- la possibilité d’utiliser l’assistant de création des packages pour effectuer des soumissions directes au Microsoft Store ;
- la fin de la prise en charge du déploiement sur les appareils Windows Mobile dans Visual Studio 2019. Les tentatives de déploiement sur un appareil Windows 10 Mobile entraînent une erreur indiquant que « Le déploiement sur les appareils Windows Mobile n’est pas pris en charge dans Visual Studio 2019 ». Si vous avez besoin de continuer à travailler sur une application pour des appareils Windows 10 Mobile, continuez à utiliser Visual Studio 2017.
XV. Conclusion▲
Après avoir testé Visual Studio 2019, j’ai été impressionné par Live Share, une fonctionnalité collaborative très intéressante, qui apportera un plus dans la productivité des développeurs. Il faut apprécier les efforts de Microsoft pour offrir une meilleure prise en charge de conteneurs et de Git. Les révisions apportées à l’interface, notamment en ce qui concerne l’interface de démarrage, rendent l’EDI plus accessible pour les débutants, tout en optimisant l’utilisation pour les développeurs expérimentés. On va regretter toutefois que plusieurs fonctionnalités soient centrées sur Microsoft Azure.
XVI. Remerciements▲
Je tiens à remercier escartefigue pour sa relecture et correction orthographique.