Les nouveautés de Visual Studio 2017

Hinault Romaric

Cet article présente en détail les nouveautés de Visual Studio 2017, la dernière version majeure de l'environnement de développement intégré maintenu par Microsoft.

Commentez

- Titre : Les nouveautés de Visual Studio 2017

- Auteur : Hinault Romaric

- Parution : 30 janvier 2017

- Public visé :

- Licence : Copyright ® 2017 Hinault Romaric. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Introduction

- II. Historique des versions de Visual Studio

- II-A. Visual Studio 97

- II-B. Visual Studio 6.0

- II-C. Visual Studio .NET

- II-D. Visual Studio 2003

- II-E. Visual Studio 2005

- II-F. Visual Studio 2008

- II-G. Visual Studio 2010

- II-H. Visual Studio 2012

- II-I. Visual Studio 2013

- II-J. Visual Studio 2015

- III. Les éditions de Visual Studio 2017

- IV. Configuration système requise

- V. Installation

- VI. Charges de travail

- VI-A. Windows

- VI-B. Web et Cloud

- VI-C. Mobile et jeux

- VI-D. Autres ensembles d'outils

- VII. Interface de démarrage et chargement des projets

- VII-A. Page de démarrage

- VII-B. Chargement des projets

- VIII. Éditeur de code

- VIII-A. Meilleure navigation dans le code

- VIII-B. Prise en charge de la coloration syntaxique, la saisie semi-automatique, l'extrait de code et la recherche pour plus de langages

- VIII-C. Ouvrir un dossier

- VIII-D. Gestionnaire d'extensions itinérantes

- VIII-E. Modifier des extensions en bloc

- VIII-F. Nouveau format d'extensibilité

- VIII-G. Prise en charge de Ngen

- VIII-H. Connexion à des services

- VIII-I. IntelliSense

- IX. Support des langages de programmation

- IX-A. C# et Visual Basic

- IX-B. Visual C++

- IX-B-1. Analyse du code C++

- IX-B-2. Compilateur C++

- IX-B-3. Bibliothèques C++

- IX-B-4. IDE C++

- IX-B-5. Outils Clang/C2

- IX-C. Support de F#

- IX-D. Support de Python

- IX-E. Support de R

- IX-F. Support de JavaScript

- IX-F-1. TypeScript 2.1

- IX-F-2. Service de langage JavaScript

- X. Développement Web

- X-A. Débogueur Chrome

- X-B. Browser Link

- X-C. ASP.NET Core

- X-D. Outils .NET Core et Docker

- X-E. Node.js Tools pour Visual Studio

- XI. Développement Windows

- XI-A. Outils pour XAML

- XI-A-1. Modifier et continuer du code XAML

- XI-A-2. Améliorations de l'éditeur XAML

- XI-A-3. Outils pour le développement d'applications Windows universelles

- XII. Développement mobile

- XII-A. Xamarin

- XII-B. Apache Cordova

- XIII. Développement Cloud

- XIV. Développement de jeux

- XV. Tests unitaires

- XV-A. MsTest V2

- XV-B. Tests unitaires en direct

- XVI. Abordage et diagnostics

- XVI-A. Exécuter en un clic

- XVI-B. Filtre attacher/rattacher au processus

- XVI-C. Nouvel assistant d'exception

- XVI-D. Mise à jour des outils de diagnostic

- XVII. Autres nouveautés

- XVII-A. Outils de développement pour Office

- XVII-B. Outils de développement pour SQL Server

- XVII-C. NuGet

- XVIII. Conclusion

- XIX. Remerciements

- XX. Liens utiles

I - Introduction

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 ».

Microsoft sort les nouvelles versions de l'EDI pratiquement tous les deux ans. Ainsi, après Visual Studio 2015, place à Visual Studio 2017. Microsoft a présenté il y a quelques jours la Release Candidate (RC) de Visual Studio 2017. La publication de la RC est une étape importante dans le cycle de développement de cette version. En effet, toutes les fonctionnalités ont été intégrées et l'EDI est assez robuste pour être utilisé en environnement de production.

Cette nouvelle version promet de booster la productivité des développeurs en introduisant plusieurs améliorations et nouvelles fonctionnalités.

Ce tutoriel permettra de découvrir les nouveautés phares de Visual Studio 2017. La RC de l'EDI est disponible en téléchargement sur la page suivante : https://www.visualstudio.com/fr/vs/visual-studio-2017-rc/

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.

III - Les éditions de Visual Studio 2017

Microsoft a reconduit les mêmes éditions que pour Visual Studio 2015, dont :

- Visual Studio 2017 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 2017 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 2017 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.

Pour l'instant, Microsoft n'a pas encore dévoilé les prix de l'EDI. Les prix adoptés pour Visual Studio 2015 pourraient être reconduits.

IV - Configuration système requise

1. Système d'exploitation
Visual Studio 2017 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).

2. Matériel
La machine sur laquelle l'EDI s'exécute doit disposer au minium 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.

3. Langues supportées
Visual Studio 2017 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 - Installation

Au fil des versions, Visual Studio s'est enrichi de nouvelles fonctionnalités, outils et s'est ouvert à d'autres langages et plateformes : TypeScript, Node.js, Android, iOS, développement Cloud, etc.

Visual Studio est de nos jours une véritable usine à gaz, permettant de développer tout type d'application : Desktop, Web, Mobile, Cloud, multiplateforme, etc.

La prise en charge de toutes ces plateformes a rendu la taille de Visual Studio énorme. L'installation est devenue une expérience horrible. Visual Studio cible de nombreux profils de développeurs. Il est très difficile qu'un développeur ait besoin de l'ensemble des fonctionnalités que dispose l'EDI. Cependant, le processus d'installation ne dissocie pas assez les composants de l'EDI pour permettre à ce dernier de sélectionner uniquement ce dont il a besoin.

Avec Visual Studio 2017 Microsoft a remédié à cela. L'EDI introduit une nouvelle expérience d'installation. La nouvelle interface sobre et conviviale, se débarrasse des encombrements pour offrir au développeur uniquement le nécessaire pour sélectionner et installer rapidement les fonctionnalités dont il a besoin avec le moins d'impact sur son système.

Au lancement de l'installation, une fenêtre s'affiche proposant une liste de charges de travail à sélectionner. Chaque charge de travail représente un type de développement spécifique (développement Web, développement Azure, développement desktop C++, etc.).

Lorsque le développeur sélectionne une charge de travail dans le panneau à droite, une liste des éléments qui seront installés est affichée, ainsi qu'une liste des éléments facultatifs qu'il peut décider d'installer ou non.

L'onglet « composants individuels » permet de visualiser l'ensemble de composants qui seront installés. Ainsi, les utilisateurs avancés pourront mieux personnaliser leur installation. Les composants sont regroupés en famille : .NET (différentes versions du Framework .NET), activités de développement (langages supportés), débogage et tests, compilateurs, outils de génération et runtime, etc.

Le dernier onglet « Modules linguistiques » permet de sélectionner la langue de l'EDI.

Microsoft offre même le choix d'installer uniquement l'éditeur de code. Cette installation minimale nécessite seulement quelques centaines de mégaoctets (750 Mo). Pourtant, elle prend en charge l'édition de code pour plus de 20 langages et le contrôle de source. En ajoutant juste les outils de développement Web, on passe à 5,04 Go. L'installation de tous les composants pourrait prendre jusqu'à 43 Go d'espace.

VI - Charges de travail

Avec Visual Studio 2017, Microsoft introduit les charges de travail. On retrouve dans l'EDI les charges de travail ci-dessous.

VI-A - Windows

1. Développement pour la plateforme Windows universelle regroupe l'ensemble des outils nécessaire au développement d'applications universelles pour Windows ;

2. Développement .NET Desktop est destiné aux développeurs qui créent des applications WPF, Windows Forms et Console avec .NET ;

3. Développement Desktop en C++ offre aux développeurs C++ le nécessaire pour mettre sur pied les applications Windows classiques en utilisant MFC, ATL, etc.

VI-B - Web et Cloud

1. Développement Web propose l'essentiel pour créer des applications Web en utilisant ASP.NET, HTML, JavaScript et CSS ;

2. Développement Azure permet de créer des applications et des ressources Cloud en utilisant le SDK Azure ;

3. Développement Python : encore au stade de préversion, les outils pour Python permettent d'utiliser Visual Studio pour éditer du code et déboguer pour Python ;

4. Développement Node.js propose aux adeptes de la plateforme événementielle JavaScript le nécessaire pour générer des applications réseau scalables avec Node.js ;

5. .NET Core et Docker : cette charge de travail dispose des outils de développement Web pour ASP.NET Core et le déploiement continu via des images Docker ;

6. Data science and analytical applications : Microsoft y regroupe un ensemble d'outils et de langages permettant de créer des applications de sciences des données, notamment en Python, R et F# ;

7. Stockage et traitement des données : l'installation de cette charge de travail permet d'avoir à portée de main les outils pour se connecter et manipuler des données SQL Server, Azure Data et Hadoop.

VI-C - Mobile et jeux

1. Développement mobile avec .NET : depuis Visual Studio 2015, Microsoft offre la possibilité de développer des applications natives multiplateformes pour Android, iOS et Windows en utilisant Xamarin et le langage C#. Dans Visual Studio 2017, tous les outils pour effectuer cela sont disponibles à travers la charge de travail Développement mobile avec .NET ;

2. Développement mobile avec JavaScript : les outils de développement Visual Studio pour Apache Cordova permettent de développer, déboguer et tester des applications mobiles JavaScript qui s'exécuteront sur Android, iOS et Windows ;

3. Développement mobile avec C++ dispose des outils permettant de créer des applications natives C++ pour Android et iOS ;

4. Développement de jeux avec C++ : les développeurs de jeux y trouveront les outils pour créer des jeux en C++ pour Windows ou encore la Xbox. Cette charge de travail dispose des moteurs de jeux populaires Unreal ou encore Cocos ;

5. Développement de jeux avec Unity : grâce à un partenariat avec l'éditeur du célèbre moteur de jeux 2D et 3D, Microsoft propose via cette charge de travail un ensemble d'outils Visual Studio pour Unity, permettant de développer des jeux multiplateformes, pouvant s'exécuter sur près de 21 plateformes.

VI-D - Autres ensembles d'outils

1. Développement des extensions pour Visual Studio propose des outils permettant d'utiliser C#, Visual Basic ou C++ pour créer des composants additionnels et des extensions pour Visual Studio.

2. Développement Linux en C++ : cette charge de travail inclut Visual C++ pour le développement Linux, le runtime C Windows universel et les fonctionnalités de base C++ de Visual Studio. Suite à son installation, vous pouvez utiliser Visual Studio pour vous connecter à une machine Linux et ce dernier s'occupe de la génération à distance de votre application et son exécution à partir du débogueur.

VII - Interface de démarrage et chargement des projets

VII-A - Page de démarrage

Une fois l'EDI installé, au démarrage, on remarque les améliorations esthétiques qui ont été apportées à la page de démarrage, afin de rendre le développeur plus productif. Cette dernière s'enrichit de nouvelles fonctionnalités, y compris :

- la possibilité de télécharger les référentiels distants depuis VSTS ;

- l'affichage des référentiels qui ont été clonés sur d'autres machines dans la liste des éléments récemment utilisés, permettant de les cloner facilement sur votre ordinateur ;

- l'affichage des modèles de projet dans cette page, permettant de créer un nouveau projet directement à partir de cette dernière.

Par ailleurs, il est possible de réduire certaines sections, dont le Badge sur les éléments récemment ajoutés dans le flux d'actualités, comme vous pouvez le remarquer sur la capture suivante :

VII-B - Chargement des projets

Le chargement des solutions volumineuses avec Visual Studio a un impact non négligeable sur l'utilisation de la mémoire et la productivité du développeur. Il faut le dire, le temps de chargement des solutions volumineuses est très souvent assez long. C'est pourquoi certaines équipes se tournent vers des extensions comme Funnel ou encore Solution Load Manager. Avec Visual Studio 2017, Microsoft essaye de remédier à cela en proposant le chargement allégé des solutions.

Cette nouveauté peut apporter une amélioration importante au temps de chargement et à l'utilisation de la mémoire. Par défaut, la fonctionnalité n'est pas activée. Elle peut être activée pour une solution spécifique ou pour l'ensemble de l'EDI. Pour l'activer globalement, accédez à la boîte de dialogue « Options des outils » en sélectionnant « Général » sous « Projets et solutions », puis cochez « Chargement de solution allégé ».

De plus, Visual Studio sera capable d'inviter l'utilisateur à activer cette fonctionnalité s'il se rend compte que la solution de ce dernier est volumineuse.

VIII - Éditeur de code

L'éditeur de code de Visual Studio s'enrichit de nombreuses nouvelles fonctionnalités pour accroître la productivité du développeur.

VIII-A - Meilleure navigation dans le code

Visual Studio 2017 s'enrichit d'une fonctionnalité phare des utilisateurs de Resharper. La fonction Aller à (Ctrl + ou Ctrl + T) permet de trouver et d'accéder rapidement aux fichiers, types, méthodes et autres éléments du code. De plus, Visual Studio se positionne par défaut sur le premier élément de la liste.

Simple et efficace, cette fonctionnalité aura un impact intéressant sur le rendement des développeurs.

Également dans ce registre, Visual Studio 2017 apporte une révision importante à la fonction Rechercher toutes les références. Cette dernière offre des fonctions avancées de regroupement, de tri et de recherche dans les résultats des références, ainsi qu'une coloration des résultats pour les langages Visual Basic et C#.

En glissant le curseur de la souris sur une ligne des résultats de recherche, une infobulle apparaît avec le contexte de la référence dans le code source, comme vous pouvez le constater avec la capture ci-dessus.

Visual Studio offre la possibilité de conserver ses résultats de recherche pour une réutilisation future. Il suffit juste de cliquer sur le bouton « Conserver les résultats ». Votre prochaine recherche s'affichera dans un nouvel onglet, comme le montre la capture ci-dessous :

La dernière nouveauté en ce qui concerne la navigation dans le code est l'ajout des lignes de repères dans l'éditeur de code. Quand vous placez la souris sur une ligne, une infobulle s'affiche : elle contient le contexte du bloc de code en cours en relation avec ses blocs parents. C#, Visual Basic et XAML sont supportés par cette nouveauté.

J'ai trouvé cette fonctionnalité pas très intuitive. Heureusement, pour ceux qui ne l'apprécient pas, il est possible de la désactiver dans la section « Général » de la catégorie « Éditeur de texte » des Options de l'EDI.

VIII-B - Prise en charge de la coloration syntaxique, la saisie semi-automatique, l'extrait de code et la recherche pour plus de langages

Visual Studio prend désormais en charge la coloration syntaxique et la saisie semi-automatique pour : Bat, Clojure, CoffeeScript, CSS, Docker, F#, Groovy, INI, Jade, Javadoc, JSON, LESS, LUA, Make, Markdown ++, Objective-C, Perl, PowerShell, Python, Rust, Shaderlab, SQL, Visual Basic .NET, YAML.

En plus de la coloration syntaxique et la saisie semi-automatique, les langages suivants ont droit au support des extraits de code :CMake, C++, C#, Go, Groovy, HTML, Java, Javadoc, JavaScript, Lua, Perl, PHP, R, Ruby, Shellscript, Swift, XML.

Juste l'installation de l'éditeur de code sans aucune charge de travail permettrait de disposer de ces fonctionnalités pour un large ensemble de langages de programmation.

VIII-C - Ouvrir un dossier

Avec les versions antérieures de Visual Studio, pour ouvrir et éditer des fichiers à partir de l'explorateur de solutions, ces derniers doivent être disponibles dans un projet Visual Studio (.csproj). Cependant, Visual Studio supporte de nombreux autres langages qui n'ont aucun lien avec la plateforme .NET, et donc MSBuild. La présence d'un fichier de projet dans un dossier pour que les fichiers de ce dernier soient visibles dans l'Explorateur de solutions est donc une exigence inutile pour ces autres langages.

Avec Visual Studio 2017, Microsoft introduit l'option « Ouvrir un dossier » qui permet de travailler avec des bases de code sans projet ni solution. Pour ouvrir un dossier, vous devez cliquer sur le menu Fichier, ensuite sur Ouvrir, puis sur Dossier.

L'ensemble des fichiers est visible dans l'Explorateur de solutions. En plus de la coloration syntaxique et la navigation par symboles (GoTo), certains langages (C++, C#, Visual Basic, Python, Node.js.) bénéficient même de l'IntelliSense et du débogage directement à partir du dossier.

La génération et le débogage sont également supportés par l'option Dossier, qui offre en plus la possibilité de : rechercher dans le code de votre dossier avec GoTo (Ctrl+,); configurer les paramètres de débogage et de lancement avec launch.json et bien plus.

VIII-D - Gestionnaire d'extensions itinérantes

La galerie d'extensions de Visual Studio dispose de plus de 6000 extensions. Le développeur dans ses travaux peut être amené à utiliser fréquemment plusieurs de celles-ci. L'utilisation d'une nouvelle instance de Visual Studio l'oblige à maintenir sa liste d'extensions. Il devra donc rechercher et télécharger chaque élément de la liste.

Avec Visual Studio 2017, Microsoft rend cela plus facile en introduisant le gestionnaire d'extensions itinérantes. Cette fonctionnalité permet d'intégrer dans une liste vos extensions préférées. Ainsi, lorsque vous vous retrouvez sur un autre ordinateur, vous pouvez simplement aller sur Gestionnaire d'extensions itinérantes pour retrouver la liste de vos extensions préférées et les installer si besoin.

Quand vous utilisez cette fonctionnalité, vous remarquez trois types d'icônes :

- Icône Itinérante : désigne une extension qui fait partie de votre liste d'itinérances, mais qui n'est pas installée sur cet ordinateur. Vous pouvez l'installer via le bouton « Télécharger »;

- Icône Itinérante et installée : désigne toutes les extensions qui font partie de votre liste d'itinérances et qui sont installées dans cet environnement. Si vous décidez de ne pas les rendre itinérantes, vous pouvez les supprimer via le bouton « Arrêter l'itinérance ».

- Icône Installée : désigne toutes les extensions qui sont installées dans cet environnement, mais qui ne font pas partie de votre liste d'itinérances. Les extensions peuvent être ajoutées à la liste d'itinérances via le bouton « Démarrer l'itinérance ».

La liste de vos extensions d'itinérances est synchronisée dans le Cloud. Pour utiliser donc cette fonctionnalité, vous devez être connecté à Visual Studio avec votre compte Microsoft.

VIII-E - Modifier des extensions en bloc

Avec Visual Studio 2015 et versions antérieures, une fois une extension téléchargée, l'installation était effectuée immédiatement et il était proposé à l'utilisateur de redémarrer son EDI pour que les changements soient pris en compte.

Le processus a été revu avec Visual Studio 2017. Vous pouvez désormais planifier l'installation, la mise à jour et la désinstallation de plusieurs extensions avant de devoir redémarrer Visual Studio. En bas à droite, vous trouverez un résumé de toutes les tâches planifiées. Pour annuler la planification de la modification d'une extension, cliquez sur le x.

Une fois que vous avez fermé toutes les fenêtres de Visual Studio, le programme d'installation d'extensions VSIX démarre automatiquement et commence à effectuer les modifications en attente.

VIII-F - Nouveau format d'extensibilité

Avec les charges de travail, Microsoft offre plus de contrôle aux utilisateurs sur les outils qu'ils veulent installer. Cependant, l'installation d'une extension peut nécessiter qu'une charge de travail précise soit installée au préalable. Pour éviter les éventuels problèmes de compatibilité, Microsoft offre la possibilité aux développeurs d'extension de définir les prérequis nécessaires dans le manifeste de l'extension.

Le nouveau concepteur de manifeste VSIX dispose désormais d'un onglet Prérequis, ou les développeurs pourront spécifier les prérequis pour leur extension à partir d'une liste de composants installés.

Lors de l'installation de l'extension, le programme d'installation VSIX indique quels composants

sont manquants et les installe en même temps que l'extension.

Il faut noter qu'avec cette évolution, Microsoft a introduit un nouveau format VSIX. Le nouveau format VSIX a une compatibilité descendante et peut cibler les versions antérieures de Visual Studio jusqu'à Visual Studio 2012.

VIII-G - Prise en charge de Ngen

Ngen (Native Image Generator Tool) est un outil qui améliore les performances des applications managées. Ce dernier crée des images natives, qui sont des fichiers contenant le code machine compilé spécifique au processeur, et les installe dans le cache des images natives sur l'ordinateur local. Le runtime peut utiliser ces images natives du cache plutôt que le compilateur juste-à-temps (JIT) pour compiler l'assembly d'origine.

Avec Visual Studio 2017, vous pouvez désormais choisir d'installer des assemblies en utilisant Ngen.

- NGEN : indique s'il faut ou non utiliser NGen sur l'assembly ;

- Application NGEN : application à passer à NGen via le commutateur /ExeConfig ;

- Architecture NGEN : architecture cible pour l'image native. Les options sont : x86, x64 et all ;

- Priorité NGEN : niveau de priorité de Ngen.

VIII-H - Connexion à des services

La nouvelle « Fonctionnalités de service » facilite la connexion de votre application à des services. Un nouveau nœud appelé « Fonctionnalités du service » est disponible dans l'Explorateur de solutions pour les types de projets web et mobiles. En double-cliquant sur ce nœud, une nouvelle page s'affiche dans Visual Studio, où vous pouvez découvrir les services Microsoft les plus courants auxquels vous pouvez vous connecter.

La sélection d'un service sur la page Fonctionnalités du service appelle l'Assistant Services connectés, qui configure votre projet et télécharge les packages NuGet nécessaires pour vous permettre de démarrer le codage rapidement et facilement pour votre service.

VIII-I - IntelliSense

De nombreuses améliorations ont été apportées à l'IntelliSense pour rendre ce dernier encore plus intelligent. L'IntelliSense dispose désormais d'une barre d'état système, permettant de filtrer la liste des membres par type (méthode, propriété, classe, etc.). Chaque bouton de filtre est associé à un raccourci clavier que vous pouvez afficher en plaçant le curseur sur l'icône.

Cette fonctionnalité est disponible uniquement pour les langages C# et Visual Basic. Elle doit être activée dans les paramètres de l'IntelliSense pour chacun des langages (Outils/Options/Éditeur de texte/C# ou Visual Basic/IntelliSense).

IX - Support des langages de programmation

Visual Studio 2017 est livré avec la prise en charge des nouvelles versions des langages de programmation, dont C# 7, des spécifications de C++ et bien plus.

IX-A - C# et Visual Basic

Microsoft a dévoilé la version 7 de son langage de programmation C# avec Visual Studio 2017, ainsi que de nouvelles fonctionnalités pour Visual Basic. Une fois l'IDE installé, vous pouvez profiter des nouveautés de ces langages.

Il s'agit pour C# :

- le support des Tuples : un Tuple est un ensemble ordonné fini de valeurs typées et éventuellement nommées, qui est d'un grand intérêt pour regrouper un ensemble de valeurs ;

- les fonctions locales qui étendent le langage pour offrir aux développeurs la possibilité de déclarer une méthode à l'intérieur d'une autre ;

- les retours de fonctions par référence (Ref returns), qui permettent aux fonctions de retourner des valeurs par référence ;

- les Pattern matching, qui s'inspirent des langages fonctionnels pour offrir aux développeurs la possibilité d'utiliser le filtrage par motif, pour vérifier la structure des objets ;

- les types de retour similaires à des tâches pour les méthodes asynchrones : cette nouveauté introduit la possibilité de retourner tout type similaire à une tâche depuis une méthode asynchrone. Auparavant, ces types étaient limités à Task<T> et Task.

Pour plus de détails sur les nouveautés de C# 7, vous pouvez consulter cet article de Thomas Levesque.

En ce qui concerne Visual Basic, on va retrouver presque les mêmes fonctionnalités en dehors des Pattern matching.

En plus de ces nouveautés pour ces langages de programmation, Visual Studio apporte d'autres améliorations, dont :

- la simplification de l'initialisation d'un objet avec un initialiseur ;

- le déplacement des déclarations de variable out inline, en tirant parti d'une nouvelle fonctionnalité C#7 ;

- la simplification des vérifications des valeurs Null et des expressions Throw en utilisant un opérateur de fusion Null, en tirant parti d'une nouvelle fonctionnalité C#7 ;

- la mise à jour des analyseurs de style : cette fonctionnalité permet aux équipes de personnaliser et appliquer les conventions de codage. La mise à jour concerne le nommage des règles de style, l'utilisation de « var » ou des types explicites, l'utilisation de « this » ou « Me » lors des accès membres, les accolades manquantes, Switch/Case manquant, etc.

IX-B - Visual C++

Les développeurs C++ qui utilisent Visual Studio ont droit à de nombreuses améliorations de l'environnement Visual C++. Microsoft affirme avoir corrigé plus de 250 bogues et problèmes dans le compilateur et les outils.

IX-B-1 - Analyse du code C++

Visual Studio 2017 embarque des vérificateurs pour les « C++ Core Guidelines ». Ces derniers sont un ensemble des règles et bonnes pratiques pour l'écriture du code C++ de bonne qualité. Ce guide a été publié il y a pratiquement un an. Microsoft avait immédiatement développé un outil d'analyse de code pour permettre aux équipes de valider que ces règles sont respectées. L'outil était disponible sous forme d'un package NuGet pour Visual Studio 2015. Avec Visual Studio 2017, les développeurs n'auront plus besoin de télécharger et installer séparément ce dernier.

Toutefois, la fonctionnalité n'est pas activée par défaut. Pour l'activer, il faudra se rendre dans les propriétés du projet, puis dérouler la zone « Code Analysis » et sélectionner « Extensions ».

IX-B-2 - Compilateur C++

Microsoft a souvent été critiqué dans le passé pour son retard dans la prise en charge des normes C++ dans son compilateur.

Avec Visual Studio 2017, le compilateur C++ a eu droit à une mise à jour pour prendre en charge des fonctionnalités des spécifications C++11 et C++14. Les développeurs auront également droit à une prise en charge préliminaire de certaines fonctionnalités prévues pour la version C++17.

Les développeurs du compilateur C++ font savoir qu'ils ont complété l'implémentation des fonctionnalités de la norme C++14 avec la prise en charge des expressions constexpr généralisées et de NSDMI pour les agrégats. Toutefois, ce dernier ne dispose pas encore de certaines fonctionnalités des normes C++11 et C++98.

Visual Studio 2017 permet l'utilisation de /sdl avec /await. Microsoft a aussi supprimé la limitation de /rtc avec les coroutines. L'EDI apporte également plusieurs améliorations et optimisations à la génération de code, dont :

- la génération du code des boucles : prise en charge de la vectorisation automatique de la division d'entiers constants, optimisation de l'identification des modèles de memset ;

- la sécurité du code : amélioration de la production du diagnostic de dépassement de mémoire tampon du compilateur ;

- /guard:cf protège désormais les instructions Switch qui génèrent des tableaux de saut ;

- l'option /debug:fastlink a été améliorée pour fournir une édition des liens sur les composants de grande taille. Elle est de 30 % plus rapide que dans Visual Studio 2015.

IX-B-3 - Bibliothèques C++

La Bibliothèque STL (Standard Template Library) qui implémente un ensemble de conteneurs, dont les vecteurs, les tableaux associatifs ou encore les listes chaînées, a eu droit à de nouvelles fonctionnalités et améliorations, dont :

- des améliorations mineures des diagnostics de basic_string _ITERATOR_DEBUG_LEVEL != 0. Le déplacement d'une vérification IDL dans le système des chaînes signale désormais le comportement spécifique qui a provoqué le déplacement. Par exemple, au lieu de « itérateur de chaîne non déréférençable », vous recevez « impossible de déréférencer l'itérateur de chaîne, car il est hors limites ;

- les surcharges de basic_string::find(char) appellent une seule fois traits::find. Auparavant, ceci était implémenté comme une recherche de chaîne générale d'une chaîne de longueur 1. Ce changement permet une amélioration des performances ;

- basic_string::operator == vérifie désormais la taille de la chaîne avant de comparer le contenu des chaînes, ce qui permet un gain de performance ;

- la suppression du couplage des contrôles de basic_string, qui rendait difficile l'analyse par l'optimiseur du compilateur ;

- l'ajout de <any>, <string_view>, apply() et make_from_tuple() ;

- std::vector a été remanié pour un fonctionnement plus correct et de meilleures performances : les alias utilisés pour l'insertion/emplacement sont désormais gérés correctement conformément à la norme, la garantie d'exception forte est désormais fournie conformément à la norme via move_if_noexcept() et d'autres logiques, et insertion/emplacement réalise moins d'opérations sur les éléments ;

- la bibliothèque STL évite désormais de déréférencer les pointeurs fantômes Null ;

- ajout de <optional>, <variant>, shared_ptr::weak_type et <cstdalign> ;

- activation du constexpr C++14 dans min/max/minmax(initializer_list) et min_element/max_element/minmax_element().

- amélioration des performances de weak_ptr::lock() ;

- correction de l'opérateur d'assignation de déplacement std::promise, auparavant susceptible de provoquer le blocage définitif du code ;

- correction des erreurs du compilateur avec la conversion implicite de atomic<T *> en T * ;

- pointer_traits<Ptr> détecte désormais Ptr::rebind<U> correctement ;

- correction d'un qualificateur const manquant dans l'opérateur de soustraction de move_iterator ;

- correction d'une génération de code silencieuse incorrecte pour les allocateurs avec état définis par l'utilisateur exigeant propagate_on_container_copy_assignment et propagate_on_container_move_assignment ;

- atomic<T> accepte désormais la fonction operator&() surchargée ;

- pour augmenter le débit du compilateur, les en-têtes STL évitent désormais d'inclure des déclarations de fonctions intrinsèques de compilateur inutiles ;

- Légère amélioration des diagnostics du compilateur pour les appels bind() incorrects.

IX-B-4 - IDE C++

Avec Visual Studio 2017, le nouveau moteur de base de données SQLite est désormais utilisé par défaut. Cela permet d'accélérer les opérations de base de données et d'améliorer le temps d'analyse de la solution initiale.

Les projets et fichiers qui n'utilisent pas d'en-têtes précompilés ont droit à de meilleures performances lors de l'utilisation de l'IntelliSense, car un en-tête précompilé automatique est créé pour les en-têtes du fichier en cours.

Une fonctionnalité de filtrage des erreurs a été introduite à l'éditeur. Cette dernière offre une aide pour les erreurs IntelliSense figurant dans la liste d'erreurs. Par ailleurs, le fait de cliquer sur la colonne d'erreur permet désormais un filtrage. De plus, en cliquant sur une erreur spécifique ou sur F1, une recherche en ligne est lancée sur le message d'erreur concerné.

Visual Studio 2017 offre également la possibilité de filtrer les éléments de la liste des membres par type.

Au rayon des autres nouveautés qui ont été apportées à l'éditeur C++, on va noter :

- l'intégration d'une nouvelle fonctionnalité IntelliSense prédictive qui fournit un filtrage en fonction du contexte de ce qui apparaît dans la liste des membres. Il s'agit d'une fonctionnalité expérimentale ;

- la nouvelle interface utilisateur de la fonction « Rechercher toutes les références » inclut des informations indiquant dans les résultats du code si vous écrivez ou lisez dans une variable ;

- la fonctionnalité IntelliSense Point par flèche a franchi le cap de fonctionnalité expérimentale et est désormais activée par défaut ;

- Les fonctionnalités de refactorisation expérimentales Modifier la signature et Extraire la fonction sont désormais disponibles par défaut ;

- l'IntelliSense pour C++ fonctionne sans qu'il soit nécessaire de créer un fichier CppProperties.json dans le dossier racine ;

- une nouvelle liste déroulante a été ajoutée, pour permettre aux utilisateurs de basculer facilement entre les configurations fournies par les fichiers CMake et CppProperties.json ;

- prise en charge de CMake dans Ouvrir le dossier : l'ouverture de projets CMake avec « Ouvrir le dossier » configure automatiquement l'environnement pour la modification, la génération et le débogage en C++.

IX-B-5 - Outils Clang/C2

L'ensemble d'outils Clang/C2 qui est fourni avec Visual Studio 2017 RC prend désormais en charge le commutateur /bigobj, qui est essentiel pour la création de gros projets. Il inclut également plusieurs résolutions de bogues importantes, à la fois au niveau du front-end et du back-end du compilateur.

IX-C - Support de F#

F# est un langage de programmation fonctionnel, impératif et fortement typé. Il repose sur la plateforme .NET et est développé sous une licence open source par Microsoft et de nombreux contributeurs bénévoles. Le compilateur et les outils F# sont disponibles pour Windows, Linux et OS X.

Pour les utilisateurs de Visual Studio, l'EDI embarque par défaut Visual F# pour la création d'applications avec le langage fonctionnel. Dans Visual Studio 2017, Visual F# a été mis à jour et embarque la version 4.1 du langage. Cette version apporte plusieurs nouveautés, dont :

- l'interopérabilité des tuples de type struct avec les tuples C# 7/VB 15 ;

- les retours ByRef prenant en charge la consommation de retours ref C# 7 ;

- la prise en charge d'enregistrement struct avec l'attribut [<Struct>] ;

- la prise en charge de l'union discriminée struct avec l'attribut [<Struct>] ;

- un nouveau type Result<'TSuccess, 'TFailure>, avec prise en charge des fonctions dans Fsharp.Core ;

- le mot-clé fixed, qui prend en charge l'épinglage d'une valeur locale de type pointeur sur la pile ;

- les Arguments d'attributs des informations de l'appelant ;

- les types mutuellement référentiels et modules au sein du même fichier via namespace rec et module rec ;

- le Suffixe « Module » implicite sur les modules qui partagent le même nom en tant que type.

Le compilateur, quant à lui, offre de meilleures performances et des améliorations en ce qui concerne notamment les messages d'erreur, l'interopérabilité entre F# et C# et la qualité des paramètres de type résolus statiquement. Il faut également noter qu'il prend en charge la génération des fichiers PDB portables.

Toujours en ce qui concerne F#, Visual Studio 2017 embarque un nouvel éditeur basé sur les espaces de travail Roslyn. Il dispose des fonctionnalités suivantes :

- saisie semi-automatique du texte ;

- coloration des types ;

- fonctionnalité Atteindre la définition basée sur Roslyn ;

- correspondance des accolades basée sur Roslyn ;

- indentation basée sur Roslyn ;

- résolution des points d'arrêt basée sur Roslyn.

IX-D - Support de Python

Depuis mars 2011, Microsoft développe en open source les outils Python pour Visual Studio (PTVS). Il s'agissait jusqu'ici d'une extension permettant d'ajouter à Visual Studio la prise en charge du langage de programmation.

Avec Visual Studio 2017, Microsoft offre directement à l'installation de l'EDI, une charge de travail Python pour développer des scripts, des applications web et l'automatisation à l'aide de frameworks et packages courants.

Des options d'installation sont fournies pour Python ou la plateforme de calcul scientifique Anaconda. De plus, Visual Studio propose des outils additionnels pour l'utilisation du langage pour l'analyse interactive des données (data scientist).

En plus de ces outils, Visual Studio 2017 apporte pour Python :

- des améliorations de l'éditeur de code et du débogueur ;

- un explorateur Cookiecutter, pour rechercher, installer et générer des projets à partir de modèles Cookiecutter ;

- le nouveau raccourci clavier « Ctrl+Entrée » pour envoyer la ligne ou la cellule de code active dans la fenêtre interactive ;

- la possibilité de créer autant de fenêtres interactives que vous voulez, avec des versions identiques ou différentes de Python ;

- la possibilité de créer et déboguer les extensions C pour Python 3.5 et ultérieures en utilisant l'option de développement natif Python et le modèle C++ ;

- la saisie semi-automatique des noms de fichier dans l'éditeur et la fenêtre interactive ;

- l'analyse du code s'exécute désormais dans un processus distinct pour chaque projet, ce qui permet d'optimiser le parallélisme et l'utilisation de la mémoire.

IX-E - Support de R

Visual Studio est destiné pratiquement à tous les profils de développeur. De ce fait, il offre une prise en charge du langage R, dédié au traitement des données et l'analyse statistiques. La charge de travail Science des données permet de disposer des outils nécessaires à la création de programmes en R, en utilisant Visual Studio. Les développeurs qui utilisent le langage pourront bénéficier des améliorations suivantes :

- l'intégration d'une visionneuse de plusieurs tables de données avec tri par colonne ;

- la suppression de variables à partir de l'Explorateur de variables ;

- l'accès à la définition des fonctions de la bibliothèque ;

- IntelliSense, aperçu dans Rmarkdown ;

- la prise en charge de la résolution Windows, ainsi que du localisateur ;

- un client Microsoft R intégré.

IX-F - Support de JavaScript

IX-F-1 - TypeScript 2.1

La Release Candidate de TypeScript 2.1 est disponible avec cette version de Visual Studio. TypeScript est un surensemble de JavaScript qui veut faire du langage la plateforme idéale pour des projets costaux. Il dispose d'un typage statique et optionnel, d'un système de classes et d'interfaces, d'une division en modules, de la gestion de l'importation de fichiers, la prise en charge des génériques et bien plus.

Avec la version 2.1, les développeurs vont disposer d'un modèle async/await de bas niveau, une meilleure inférence des types, l'expansion d'objet local, le support d'une bibliothèque externe de fonctions auxiliaires, l'utilisation des valeurs de retour des appels à super() en tant que this et bien plus.

IX-F-2 - Service de langage JavaScript

Jusqu'ici, l'éditeur JavaScript de Visual Studio utilisait un modèle d'exécution pour le service de langage. En effet, lorsque vous écrivez du code, un moteur JavaScript exécute de façon continue ce dernier pour fournir une précision « runtime-like » pour la liste de complétion du code, la signature et bien plus. Bien qu'offrant des bonnes performances pour la manipulation des aspects dynamiques du langage, il introduit cependant une incohérence et une complexité significatives. Par exemple, ce dernier est soumis à des délais d'attente lors de l'exécution des boucles imbriquées ou encore les requêtes HTTP.

Pour pallier cela, Microsoft a développé Salsa, un nouveau service de langage pour JavaScript. Salsa utilise des fichiers de définitions TypeScript pour améliorer l'IntelliSense. Il inclut la prise en charge de l'IntelliSense pour les annotations de commentaires JSDoc et les formats de module ES6 et JS les plus courants. Il prend en charge la syntaxe JSX et des fonctionnalités de ES2016, telles que les décorateurs, les modules et les générateurs.

X - Développement Web

X-A - Débogueur Chrome

Avec Visual Studio, il est possible de déboguer à la fois du code backend .NET et du code client JavaScript avec Internet Explorer. Cependant, cette possibilité était limitée uniquement au navigateur de Microsoft.

Avec Visual Studio 2017, la firme introduit un nouveau débogueur pour Chrome. Avec ce dernier, il est désormais possible de déboguer du code JavaScript et TypeScript directement dans Visual Studio lorsque vous utilisez le navigateur Chrome.

À l'exécution de l'application, Visual Studio utilise le protocole « Remote Debugging » de Chrome pour s'attacher avec le navigateur. Une fois le débogueur de l'IDE lié au navigateur, le développeur peut exploiter toutes les possibilités offertes par ce dernier pour déboguer son code JavaScript ou TypeScript (point d'arrêt, exécution pas à pas, etc.).

X-B - Browser Link

Pour améliorer la productivité des développeurs, Microsoft avait introduit avec Visual Studio 2013 la fonctionnalité Browser Link. Celle-ci permet de créer un canal de communication entre Visual Studio et un ou plusieurs navigateurs.

Lorsque le développeur édite son code à partir de Visual Studio, il peut directement rafraîchir tous les navigateurs dans lesquels son application est exécutée et visualiser les modifications.

Dans Visual Studio 2017, Microsoft a mis à jour cette fonctionnalité qui est désormais plus performante. Le rafraîchissement d'une page se fait plus rapidement et il est possible pendant le débogage de modifier la valeur d'une variable et visualiser le résultat dans le navigateur.

X-C - ASP.NET Core

L'installation de la charge de travail pour le développement Web installe la version 1.0.1 du framework open source ASP.NET Core. Il s'agit d'une mise à jour mineure de ASP.NET Core 1.0 qui apporte essentiellement des correctifs de sécurité, des correctifs pour de nombreux bogues et des améliorations pour le serveur Web Kestrel, le routage et MVC. Tous les modèles de projet ASP.NET Core dans Visual Studio utilisent ce dernier.

X-D - Outils .NET Core et Docker

Les outils .NET Core et Docker apportent un ensemble de fonctionnalités pour le développement et le déploiement d'applications .NET Core dans des conteneurs Docker. Lors de la création d'une application ASP.NET Core, le développeur peut désormais intégrer le support de Docker à partir d'une case à cocher.

Pour les applications existantes, il est possible d'intégrer cette prise en charge en faisant un clic droit sur le projet dans l'explorateur de solutions, puis en sélectionnant Ajouter, puis Docker Project Support.

Les fichiers nécessaires pour l'exécution de votre application dans un conteneur docker seront ajoutés à la solution. Dans la barre d'outils de Visual Stduio, vous verrez désormais une icône Docker qui permet de lancer l'exécution de votre application dans Docker.

De plus, vous pouvez en quelques étapes ajouter l'intégration et le déploiement continus à votre projet en utilisant VSTS et Azure.

Autre nouveauté intéressante : l'abandon du projet.json pour le format .csproj. Vous remarquerez que les nouveaux projets .NET Core que vous allez créer n'auront plus de fichier project.json.

Pour les projets existants, la migration de project.json vers csproj se fait automatiquement à l'ouverture de ceux-ci avec Visual Studio 2017. Les références de package NuGet sont désormais enregistrées dans le .csproj.

X-E - Node.js Tools pour Visual Studio

Les outils de développement pour Node.js gagnent en stabilité et en performance. On va noter comme améliorations :

- une meilleure intégration avec le nouveau service du langage JavaScript Salsa ;

- une réduction de l'utilisation de la mémoire et de l'UC ;

- un temps de chargement des projets plus court ;

- la prise en charge des fichiers de modèle Pug ;

- la mise à jour des modèles de projet ;

- le support du framework de test Mocha 3.x.

XI - Développement Windows

XI-A - Outils pour XAML

XAML (Extensible Application Markup Language) est un langage de balisage basé sur XML développé par Microsoft. C'est le langage utilisé pour le développement de l'interface utilisateur des applications WPF et Windows Universelles. Dans Visual Studio 2017, de nombreuses améliorations ont été apportées pour offrir un meilleur support de ce dernier et booster la productivité des développeurs.

XI-A-1 - Modifier et continuer du code XAML

Dans les versions précédentes de Visual Studio, chaque fois que le code XAML était modifié, pour visualiser les modifications, il fallait recompiler son application et exécuter à nouveau cette dernière. Avec Visual Studio 2017, il est désormais possible de modifier le code XAML pendant que votre application est exécutée, puis de voir ces modifications dans l'application en cours d'exécution.

XI-A-2 - Améliorations de l'éditeur XAML

La fonctionnalité de Filtrage IntelliSense permet d'afficher uniquement les types correspondants et la correspondance la plus proche est sélectionnée dans la liste de saisie semi-automatique, lorsque vous écrivez du code XAML.

La fonctionnalité de binding pour les applications Windows Universelles x:Bind bénéficie désormais de la saisie semi-automatique IntelliSense lors de la liaison des événements et chemin d'accès.

Visual Studio 2017 améliore la saisie semi-automatique de l'espace de noms pour le code XAML. Lorsque vous écrivez du code, si la référence à l'espace de noms n'existe pas, vous ne bénéficiez pas du support d'IntelliSense lors de la saisie, mais, quand vous avez terminé la saisie, vous bénéficiez d'un support via l'icône d'ampoule pour générer et insérer le préfixe pour le type, et pour ajouter la définition de l'espace de noms dans votre document XAML.

Microsoft offre une meilleure gestion des espaces de noms dans le code XAML. Désormais, vous pouvez supprimer les espaces de noms inutiles et les trier à partir du menu contextuel. Si votre document XAML a des espaces de noms non nécessaires, vous voyez aussi une icône d'ampoule qui vous permet de les supprimer.

Visual Studio 2017 intègre un nouveau visualiseur de structure. Ce dernier fournit le contexte du bloc de code que vous utilisez, sans nécessiter le recours à une extension.

XI-A-3 - Outils pour le développement d'applications Windows universelles

- Chaîne d'outils .NET Native : cette dernière a été mise à jour dans Visual Studio 2017, et apporte des améliorations de performance et plus de 600 correctifs de bogues ;

- Package Microsoft.NETCore.UniversalWindowsPlatform 5.2.2 : cette mise à jour des bibliothèques pour .NET Core dispose de plusieurs correctifs. Les projets existants peuvent utiliser NuGet pour être mis à jour vers cette version ;

- SDK et émulateur de la mise à jour anniversaire Windows 10 : Visual Studio 2017 est livré avec le SDK Windows et l'émulateur Windows Phone pour la mise à jour anniversaire Windows ;

- Les éléments d'interface utilisateur créés à partir de la boîte à outils sont désormais créés avec moins de balises XAML, ce qui permet d'obtenir du code XAML plus lisible et plus propre ;

- Concepteur de manifeste : l'outil intègre désormais la capacité de générer des actifs visuels pour les applications UWP. Il sera dorénavant possible d'utiliser une image source unique pour créer des vignettes, des logos, des icônes et des écrans de démarrage à toutes les échelles souhaitées en fonction du type d'appareil ciblé par l'application.

XII - Développement mobile

XII-A - Xamarin

Juste après le rachat de Xamarin, Microsoft a annoncé que l'outil de développement d'applications mobiles (Android, iOS et Windows) natives sera désormais open source et sera intégré à Visual Studio.

Visual Studio 2017 est donc la première version de l'EDI qui embarque à sa sortie par défaut les outils de développement Xamarin, quelle que soit l'édition (Community, Professionnel ou Entreprise). Ceux-ci peuvent être installés à partir de la charge de travail « Développement mobile avec .NET ».

Cette charge de travail installe Xamarin 4.3. Cette dernière introduit la prise en charge de tvOS, le système d'exploitation développé par Apple pour l'Apple TV. Les développeurs ne seront plus obligés d'éditer le code XML complexe des fichiers .plist. Ils peuvent désormais utiliser le nouvel éditeur Plist.

Il s'agit pour l'instant d'une préversion. Malgré le fait que Visual Studio 2017 puisse être utilisé en environnement de production, ce n'est pas le cas pour ce dernier.

XII-B - Apache Cordova

À travers la charge de travail Développement mobile avec JavaScript, l'outil d'installation de Visual Studio 2017 installe la version 6.3.1 des outils de développement pour Apache Cordova.

Apache Cordova permet de concevoir des applications hybrides en JavaScript, HTML5 et CSS, pouvant exploiter les principales fonctionnalités et ressources (géolocalisation, accéléromètre, etc.) des plateformes mobiles. Ces applications peuvent être déployées sur un large éventail de dispositifs fonctionnant sur les systèmes d'exploitation Android, iOS, Windows, Windows Phone et BlackBerry OS.

Dans Visual Studio 2017, un nouveau Simulateur est disponible. Ce dernier est basé sur le navigateur et permet d'obtenir rapidement un aperçu de son application.

Dans cette version, nous avons une coloration des erreurs dans le volet de sortie de la génération pour faciliter la lecture, la prise en charge d'iOS 10 et Xcode 8. Pour rendre l'installation plus rapide, certains composants sont facultatifs (outils de génération et émulateurs pour Android et Windows) et peuvent être installés désormais directement à partir de la barre de menus de génération/déploiement de Visual Studio.

XIII - Développement Cloud

Le nouveau programme d'installation de Visual Studio dispose de la charge de travail Développement Azure. Cette dernière permet d'installer les outils nécessaires pour le développement d'applications Cloud pour Azure, dont la version 2.9.5 du kit de développement (SDK) pour Azure. Les développeurs n'auront plus besoin d'installer séparément ces outils en utilisant notamment Web Platform Installer.

Le SDK 2.9.5 permet le débogage à distance pour applications utilisant App Services, introduit de nouveaux templates pour la création des projets Azure Resource Group et offre la possibilité d'ajouter des références pour les ressources qui ne sont pas définies dans votre template, mais qui sont présentes dans votre suscription ou qui sont définies dans d'autres projets.

XIV - Développement de jeux

Visual Studio 2017 RC embarque la version 3 des outils de développement pour Unity. Cette version dispose de nombreuses nouvelles fonctionnalités pour faciliter la création de jeux, dont :

- le support de l'IntelliSense pour les messages Unity ;

- la coloration syntaxique pour les messages Unity ;

- une meilleure évaluation des expressions dans le débogueur Unity ;

- et des optimisations de performances.

XV - Tests unitaires

XV-A - MsTest V2

Visual Studio 2017 embarque la version 2.0 du framework de tests unitaires MsTest. Ce dernier a été revu pour offrir une architecture unifiée (fusion de Microsoft.VisualStudio.TestTools.UnitTesting et Microsoft.VisualStudio.TestPlatform.UnitTestFramework) et offrir une prise en charge en charge de .NET Core.

Dans la nouvelle version de l'EDI de Microsoft, on va noter la présence des nouveaux modèles de projets de tests unitaires pour .NET Core.

XV-B - Tests unitaires en direct

Voici une fonctionnalité intéressante qui vient jouer sur les plates-bandes de Ncrunch : Live Unit Testing. Elle 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.

Cette nouvelle fonctionnalité doit être activée à partir du menu Test/Live Unit Testing.

Cette fonction sera très appréciée par les adeptes des TDD (développement piloté par les tests), tout comme par ceux qui assurent la maintenance des applications. En effet, pour une application ayant des tests unitaires, dès lors que vous allez modifier une fonction, si cette dernière brise les tests unitaires, vous aurez directement un indicateur au niveau de l'éditeur de code, sans avoir besoin d'exécuter les tests unitaires.

Comme vous pouvez le constater sur l'image ci-dessus, les lignes qui sont couvertes par un test unitaire ont un symbole en vert, celles dont les tests ont échoué ont une croix rouge et celles qui ne sont pas couvertes ont un trait bleu.

Pour chaque méthode testée, il est possible de voir les tests qui couvrent ces méthodes et le résultat de chaque test en cliquant sur le symbole à côté du nom de la méthode.

On va regretter toutefois que cette fonctionnalité ne soit disponible que pour l'édition entreprise de Visual Studio. Pour l'instant, elle est encore au stade expérimental et est disponible uniquement pour les projets C#/VB pour .NET Framework et prend en charge trois frameworks de test : MSTest, xUnit et Nunit. Pendant mes tests, j'ai remarqué également qu'elle ne fonctionnait pas pour les projets ASP.NET MVC.

XVI - Abordage et diagnostics

XVI-A - Exécuter en un clic

Visual Studio dans ses versions précédentes offrait déjà la possibilité lors du débogage de placer le curseur de la souris sur une ligne, puis ouvrir le menu contextuel et cliquer sur « Exécuter jusqu'au curseur » pour lancer le débogage jusqu'à cette ligne. Avec Visual Studio 2017, Microsoft offre encore plus de souplesse dans le débogage en offrant « Exécuter en un clic ». Une icône en regard de la ligne de code sur laquelle vous souhaitez marquer un arrêt, permet de lancer le débogage jusqu'à cette ligne. Une fois le curseur de la souris sur la prochaine ligne de code où vous souhaitez effectuer un arrêt, l'icône « Exécuter jusqu'au clic » s'affiche et vous pouvez continuer avec l'exécution jusqu'à cette ligne.

XVI-B - Filtre attacher/rattacher au processus

Plus d'une centaine de processus sont en permanence en exécution sur le poste d'un développeur. Pour déboguer un code en attachant le débogueur à un processus oblige le développeur à rechercher le processus qu'il désire utiliser dans une longue liste. Ce qui n'est pas très productif.

Dans Visual Studio 2017, Microsoft a ajouté une nouvelle zone de saisie dans le champ « Attacher au processus », permettant de retrouver rapidement un processus en effectuant un filtre en fonction de ce que vous avez saisi dans ce champ. Le filtre de recherche est rémanent et affiche les résultats de votre recherche précédente quand vous rouvrez la boîte de dialogue.

Toujours dans le même registre, une fois que vous avez effectué un débogage en attachant le débogueur à un processus, si vous souhaitez effectuer un nouveau débogage en utilisant le même processus, vous n'aurez plus besoin de passer par la boite de dialogue « Attacher au processus ». La nouvelle commande « Déboguer/Rattacher au processus… » (Maj+Alt+P) va immédiatement tenter d'attacher le débogueur aux derniers processus de la session de débogage précédente. Le débogueur se rattache aux processus en tentant d'abord de mettre en correspondance l'ID du processus précédent, puis le nom du processus précédent. Si aucune correspondance n'est trouvée ou s'il existe plusieurs processus avec le même nom, la boîte de dialogue « Attacher au processus » s'affiche et vous permet de sélectionner le processus souhaité.

XVI-C - Nouvel assistant d'exception

La gestion des exceptions est un problème auquel les développeurs sont fréquemment confrontés, quel que soit le langage de développement. Le débogage de son application pour identifier et comprendre les problèmes générés par les exceptions peut rapidement devenir une activité fastidieuse.

Dans les versions précédentes de Visual Studio, Microsoft a enregistré de nombreuses plaintes des développeurs concernant l'assistant d'exception de l'EDI, qui occuperait trop d'espace et contenait assez d'informations qui noyaient l'essentiel.

Dans Visual Studio 2017, Microsoft a revu l'assistant d'exception afin de rendre ce dernier plus user-friendly. Le nouvel assistant d'exception permet d'afficher les informations liées aux exceptions dans une boîte de dialogue non modale compacte avec un accès immédiat aux exceptions internes.

Les développeurs peuvent désormais exclure les arrêts sur des types d'exception levée pour des modules spécifiques en cochant dans les cases disponibles dans les paramètres d'exception.

De plus, en cliquant sur Modifier les conditions dans l'assistant, vous pouvez ajouter les conditions qui doivent être respectées pour que l'exécution de l'application soit arrêtée suite à l'exception.

XVI-D - Mise à jour des outils de diagnostic

Les outils de profilage et de diagnostic aident le développeur à diagnostiquer l'utilisation de la mémoire, du processeur et comprendre les problèmes de performance et autres de son application.

De nombreuses améliorations ont été apportées à ces outils dans Visual Studio 2017. La fenêtre Outils de diagnostic affiche désormais une nouvelle vue Résumé de votre application lors du débogage. Cette vue affiche entre autres : le nombre d'événements Application Insights, Exceptions et IntelliTrace ; un champ pour activer et désactiver le profilage de l'UC et bien plus.

L'outil pour le diagnostic de l'utilisation du processeur offre désormais une meilleure prise en charge du code externe. Le développeur pourra l'exploiter, par exemple, pour évaluer le coût des fonctions de bibliothèque et d'infrastructure quand elles sont appelées par son code. Par ailleurs, les fonctions sont dorénavant triées selon leur utilisation du processeur.

XVII - Autres nouveautés

XVII-A - Outils de développement pour Office

Les développeurs qui utilisent Visual Studio pour étendre les fonctionnalités d'Office et SharePoint vont trouver dans cette version la dernière mise à jour des outils de développement pour Office.

Elle apporte de nouveaux modèles de complément pour Excel, Word, PowerPoint et Outlook ; le support de nouvelles fonctionnalités Office ; des mises à jour des modèles de projet et le support de SharePoint 2016.

XVII-B - Outils de développement pour SQL Server

La charge de travail stockage et traitement des données installe la version la plus récente des Data Tools pour SQL Server. Ceux-ci apportent le support des nouvelles fonctionnalités pour SQL Server 2016 et Azure SQL Database.

L'EDI prend également en charge les nouveaux types d'authentification d'Azure SQL Database, ainsi que l'authentification par mot de passe et l'authentification intégrée Azure Active Directory.

XVII-C - NuGet

Visual Studio 2017 RC est livré avec la RC du gestionnaire de package NuGet 4.0. Cette version offre une meilleure prise en charge de .NET Core, des nouvelles commandes pour prendre en charge MSBuild, la restauration des packages en arrière-plan, des améliorations de performances et bien plus.

Avec le retour au fichier csproj pour les projets .NET Core et l'utilisation de ce dernier pour le référencement des packages, NuGet 4.0 apporte comme principale nouveauté la prise en charge de PackageReference. Il s'agira désormais du moyen standard pour gérer les packages NuGet pour tous les projets .NET. Ci-dessous un exemple d'ajout d'un package dans un fichier .csproj.

<PackageReference Include="Microsoft.AspNetCore.Diagnostics">
<Version>1.0.0</Version>
</PackageReference>

Le retour au .csproj permet une meilleure intégration entre MSBuild et NuGet. Il est désormais possible de générer un package directement depuis un projet en utilisant la commande msbuild /t:pack ou encore utiliser la commande msbuild /t:restore pour restaurer un package.

Il faut noter qu'après cette version, NuGet ne sera plus publié indépendamment de Visual Studio. Les améliorations et mises à jour seront désormais publiées via le programme de mise à jour de Visual Studio. Ce dernier ne sera donc plus disponible en téléchargement via la galerie d'extensions de Visual Studio.

Pour plus de détails sur NuGet 4.0, consultez le billet de blog suivant : http://blog.nuget.org/20161121/introducing-nuget4.0.html

XVIII - Conclusion

Après avoir installé et utilisé pendant quelques semaines la RC de Visual Studio 2017, j'ai pu apprécier les nouvelles fonctionnalités qu'apporte cette version, qui permettent essentiellement de booster la productivité des développeurs. L'installation de l'EDI est désormais plus aisée, grâce au nouveau programme d'installation qu'introduit cette version. En dehors de quelques problèmes connus, l'EDI est prêt pour une utilisation en environnement de production.

XIX - Remerciements

Je tiens à remercier f-leb pour sa relecture et correction orthographique.

XX - Liens utiles

- Documentation officielle de Microsoft

- Notes de version de Visual Studio 2017

- Télécharger Visual Studio 2017 RC

- Présentation de la nouvelle page de démarrage de Visual Studio 2017

- Les nouveautés de C# 7

- Nouvel assistant d'exceptions de Visual Studio 2017

- Présentation des outils .NET Core et Docker

- Présentation de Live Unit Testing