I. Premier chapitre▲
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 plateforme ».
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 presente 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 performance 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 en fin 2008 (le 19 novembre) 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.
Ce dernier 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 connu 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++, dispose d'un émulateur Android, des outils pour le développement avec le framework open source Apache Cordova et la prise 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, 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 qu'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, multiplateforme, 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é de façon native à l'EDI.
Côté langage, la prise en charge C# 7, Visual Basic .NET 13, F# 4.1, C++11 et C++14, TypeScript 2.1, Python, R, etc. sont 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 la plus chère.
- 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 Modile, 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 un processeur de 1,8 GHz, 2 Go RAM (4 Go recommandés), un espace disque de 1 Go à 40 Go, selon les fonctionnalités installées et 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, quelque 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 partir 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, les explorateurs et autres.
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ésentent.
A gauche, sont listés les élément qui ont été récemments 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 main”. Ce qui permet de passer rapidement entre chaque option avant le chargement de l'EDI.
Avec tous les langages, projets et plateformes supportés par Visual Studio, il était temps d'offrir un moyen de trouver rapidement le modèle de 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 filtrer en fonction des langages, de la plateforme 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 projet 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▲
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 quelques 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 toute 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. Il pourra ensuite envoyer le lien en question pour inviter les développeurs à collaborer.
Les développeurs invités auront juste à ouvrir l'URL dans leur navigateur pour rejoinder la session en utilisant un EDI dans lequel Live Share est installé.
Une fois qu'un développeur 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 à 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 à son 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 derniere n'est pas intégrée par défaut à l'EDI et 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 au dépôt distant. En effet, un développeur qui travaille sur un projet qui utilise le gestionnaire de version Git, doit cloner le dépôt distant sur son poste local. Une fois 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 a 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 de créer directement à partir de l'interface de l'EDI 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 le Team Explorer.
Un clic sur ce bouton et vous accédez à la fenêtre principale de l'extension. A 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 tirages que vous avez créées et celles qui vous ont été assignées.
VII-A. Création d'une nouvelle demande de tirage▲
A 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 ce dernier 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ésent 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 ajouter, IntelliCode le remplit automatiquement avec les conventions de style de code qu'il infère 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 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.
Toutefois, 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. Toutefois, la firme rassure que le transfert est sécurisé via HTTPS et que 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 nouvelle application ASP.NET Core s'executant 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 juste 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 utilisateur d'Azure Kubernetes Services de débogueur leur application en utilisant leur cluster actif sur le Cloud de Microsoft. Concrètement, dans votre cluster, vous avez couramment des petites applications (micro-services), 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 ou 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 toutefois 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, surtout lorsque plusieurs objets et propriétés enfants sont inclus, s'avérer assez frustrant 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 les 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, 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é depuis Visual Studio 2017. Avec Visual Studio 2019, elle a été étendue pour supporter les applications ASP.NET qui s'executent sur les machines virtuelles Azure. Il faut noter qu'elle prend uniquement en charge Azure et est disponible avec Visual Studio entreprise. De quoi réduire son intérêt.
A 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 et personnalisés pour .NET Core.
XI. Prise en charge du développement mobile avec Xamarin▲
Les outils de développement Visual Studio pour Xamarin on eu droit à de nombreuses modifications pour améliorer les performances, la productivité et l'expérience de développement mobile des utilisateurs. La plateforme 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 ;
- des améliorations de performances 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 package ;
- un nouvel indicateur de progression permet de voir des informations plus détaillées sur la progression de la génération lors de la génération des projets ;
- lors de la modification des fichiers XAML, il n'est plus nécessaire de 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 reduire la durée des générations ;
- des ameliorations du déploiemment 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 librairies de classes qui ciblent .NET Core 3.0. A condition toutefois d'avoir installé le SDK et cocher 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 désormais traité comme un type de fichier de première classe dans Visual Studio. Il sera désormais possible de double cliquer sur un noeud de projet pour ouvrir le fichier de projet dans l'éditeur 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 noté :
- 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▲
Quand vous publiez des applications ASP.NET sur Azure App Service, la page de synthèse de profil de publication a maintenant une nouvelle section nommée « Dépendances ». Cette nouvelle section vous permet actuellement d'associer des ressources Stockage Azure et SQL Azure à votre instance de service d'application
- Nous avons ajouté la prise en charge des applications ASP .NET Core exécutées dans Azure Kubernetes Service. Pour démarrer, consultez cet exemple docker sur GitHub.
- ASP.NET est désormais pris en charge dans l'outil Utilisation de l'UC du Profileur de performances.
-
Nous avons ajouté une expérience de projet unique simplifiée pour la mise en conteneur et le débogage :
- Applications web ASP.NET (.NET Framework)
- Applications console (.NET Core)
- Nous avons ajouté la prise en charge du débogage des applications ASP.NET Core qui utilisent Alpine comme image de base.
- Nous avons ajouté la prise en charge des images ASP.NET et .NET Core les plus récentes.
- Vous pouvez maintenant utiliser 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. Vous pouvez ensuite accéder au code identifié dans les fichiers Razor correspondants.
- Nous avons ajouté la prise en charge du ciblage des applications ASP .NET (core et bureau) qui s'exécutent sur des machines virtuelles ou groupes de machines virtuelles identiques Windows.
XIII. Support des langages de programmation▲
Avec toute nouvelle version de Visual Studio, c'est toujours 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 a 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 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 tout 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 de 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. Au rayon des nouveautés de cette version du langage de programmation, on va noter :
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 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 à l'exécution.
De ce fait, par défaut les types références, donc string, ne seront plus null. Ce qui aura des conséquences sur le code existant, car l'assignation du null à un type référence qui était permis, ne l'est plus.
Toutefois, 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 des nombreux avertissements demains.
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. A 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 null, 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 clés 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 asynchrone ▲
Le nouveau IAsyncEnumerable<T> permet d'introduire une version asynchrone de IEnumerable. Ce qui sera très pratique pour l'utilisation des flux continus de résultats, tels que ceux obtenu 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écursif▲
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 noms de 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és▲
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 ▲
La moteur de production open source multiplateforme permettant de construire, tester et créer des packages de logiciels, bénéficie également d'un meilleure support pour accroître la productivité des développeurs utilisant l'outil. On va noter entre autre :
- des améliorations des performances d'IntelliSense pour les fichiers C++ dans les projets Cmake ;
- visual Studio aide à 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 fournit une alternative à CMakeSettings.json et offre une parité avec CmakeGUI ;
- le menu CMake a été supprimé et réorganisé pour une parité plus proche avec les projets et solutions ;
- la chaîne d'outils vcpkg est automatiquement détectée et activée 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 ;
- les avertissements d'analyse statique peuvent désormais être traités en arrière-plan et affichés dans l'éditeur pour les projets Cmake ;
- le paramètre « cmakeToolchain » est désormais pris en charge 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'enregistrement anonyme qui facilite l'utilisation des enregistrements dans de nombreux contexte.
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 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 ;
- un changement sur la façon de la représentation du texte source permet d'éviter les allocations importantes au fil du temps, surtout avec les fichiers volumineux ;
- des changements 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 d'Outils > Options > Éditeur de texte > F# > IntelliSense ;
- des optimisations 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 autre :
- 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 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 ;
- 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 ;
- une nouvelle barre d'outils Environnements Python est 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, des espaces de travail Ouvrir un dossier ou des fichiers Python libres dans d'autres projets.
.
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 est installé
Autres nouveautés
Contrôle de code source et Team Explorer
- Stockez temporairement les modifications apportées le temps de travailler sur une autre tâche grâce à la prise en charge du remisage (stash) Git par les outils Git de Team Explorer.
- Essayez l'extension facultative Demandes de tirage pour Visual Studio, qui est disponible dans la Place de marché Visual Studio. Cette extension intègre les modifications de demande de tirage (pull request) dans Visual Studio.
- Découvrez la nouvelle expérience d'utilisation des éléments de travail Azure DevOps qui est axée sur les flux de travail développeur : les vues d'éléments de travail des utilisateurs, la création de branche à partir d'un élément de travail, la recherche d'éléments de travail avec #mentions et la modification intraligne.
Extensibilité
- Utilisez un seul SDK Visual Studio unifié dans le package NuGet Microsoft.VisualStudio.SDK.
- Profitez de notre mise à jour du projet VSIX pour inclure désormais une classe AsyncPackage.
- Expérimentez un nouveau modèle Projet VSIX vide que nous avons ajouté.
- Déterminez si une extension est gratuite, payante ou en version d'essai, comme c'est maintenant indiqué dans la boîte de dialogue Extensions et mises à jour.
Plateforme Windows universelle (UWP
- Conservez 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. Le concepteur de manifeste de package reste désormais totalement fidèle aux changements xml dans le fichier Package.appxmanifest.
- Utilisez le projet Création de package d'application Windows pour les projets .NET Core afin de générer des packages MSIX.
- Utilisez l'Assistant Création de package pour effectuer des soumissions directes au Microsoft Store.
- Le déploiement sur les appareils Windows Mobile n'est plus pris en charge dans Visual Studio 2019. Les tentatives de déploiement sur un appareil Windows 10 Mobile entraîne 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.