Visual Studio, C#, F#, TypeScript : récapitulatif estival des nouveautés chez Microsoft

Visual Studio, C#, F#, TypeScript : récapitulatif estival des nouveautés chez Microsoft

Mixologie

Avatar de l'auteur
Vincent Hermann

Publié dans

Logiciel

28/08/2018 10 minutes
6

Visual Studio, C#, F#, TypeScript : récapitulatif estival des nouveautés chez Microsoft

En dépit d'un été habituellement pauvre en annonces, Microsoft a continué à publier de nouvelles versions pour ses langages et environnements de développement. L'aide IntelliCode progresse également, avec notamment l'inférence styles et la prise en charge de Python.

S'il fut un temps où l'actualité informatique était fortement ralentie pendant l'été, il semble désormais loin : le calendrier des entreprises est chargé.

Microsoft avait annoncé la couleur lors de sa conférence build en mai dernier et a profité de la saison estivale pour avancer sur ses projets. Toutes les versions de Visual Studio ont ainsi été mises à jour, TypeScript 3.0 est arrivé en version finale, F# a refait parler de lui et l'aide des développeurs est demandée pour le futur framework .NET Core 3.0.

Visual Studio 2017 : nombreux ajouts pour la mise à jour 15.8

On commence d’ailleurs avec la mise à jour 15.8 pour Visual Studio, avec bon nombre d’apports que nous détaillerons, dont la prise en charge de TypeScript 3.0 et F# 4.5.

Parmi les principales nouveautés, signalons l’édition multi-caret, qui permet d’ajouter, modifier ou effacer du texte dans plusieurs endroits simultanément, après l’ajout de points d’insertion via le raccourci Ctrl + Alt + clic gauche. Visual Studio ajoute au passage plusieurs raccourcis clavier ainsi que deux profils de clavier, ReSharper et Visual Studio Code.

Plusieurs améliorations de performances sont également à noter, surtout dans les gros projets. C’est le cas avec certaines opérations Git, comme les vérifications et bascules entre branches, le rechargement n’étant plus requis. Certains tests s’exécutent également plus vite. Le CPU Usage Tool peut par ailleurs maintenant démarrer dans un état de pause.

Autre nouveauté importante, le support de l’émulateur Android, compatible avec Hyper-V si la machine du développeur a Windows 10 avec April Update. Il peut donc dès lors être exécuté en parallèle avec d’autres émulateurs, des machines virtuelles ou des outils Docker. Les dernières API d’Android sont supportées, de même que les Play Services, l’accès à la caméra, la géolocalisation et Quick Boot.

Le téléchargement de cette mise à jour 15.8 se fait directement depuis l’éditeur. Ceux n’ayant pas Visual Studio 2017 pourront le récupérer depuis son site officiel. Rappelons que l’édition Community est gratuite, à condition d’être utilisée par des particuliers, des étudiants ou pour des projets open source.

Visual Studio Code 1.26 introduit un fil d’Ariane pour les fichiers et symboles

Mi-août, Microsoft a également publié une nouvelle mouture pour Visual Studio Code, son éditeur gratuit et open source.

L’une des principales améliorations est l’arrivée d’un fil d’Ariane dans une barre de navigation affichée au-dessus du contenu. Cette barre est censée s’afficher par défaut. Si ce n’est pas le cas, il faudra se rendre dans le menu Afficher > Toggle Breadcrumbs, l’interface de Visual Studio Code étant toujours dans un mélange de français et anglais.

Ce fil peut dans tous les cas être personnalisé. Le développeur peut par exemple choisir de n’afficher que les chemins de fichiers ou uniquement vers les symboles, ou même une seule partie du chemin.

Entre autres nouveautés, signalons également les Quick Fixes, qui peuvent désormais s’appliquer à la volée sur les messages d’alertes et d’erreurs. Visual Studio Code 1.26 réintroduit en outre une fonctionnalité disparue un temps : la maximisation rapide des éditeurs qui avaient été minimisés.

Visual Studio for Mac 7.6 se veut plus fiable et rapide

La plus récente version de l’environnement de développement pour Mac apporte moins de nouveautés que les autres versions déjà citées. Elle corrige cependant bon nombre de problèmes, notamment des solutions Quick Fix qui pouvaient ne pas apparaitre quand l’analyse de sources était désactivée, des bulles d’informations parfois absentes, ainsi que des cas où IntelliSense ne fonctionnait pas.

Les performances sont également à la hausse, avec une multitude de petites améliorations sur le temps de démarrage de l’environnement et la consommation de mémoire vive. En outre, la classification par labels est plus rapide avec le C#, de même que la restauration NuGet lors du chargement d’une solution.

Les seules vrais ajouts sont à chercher du côté du support des Azure Functions, désormais plus complet. De nouveaux modèles font ainsi leur apparition, notamment pour la configuration des droits d’accès et les connection strings. Les développeurs peuvent également publier des fonctions directement depuis Visual Studio vers Azure. Cette publication peut se faire vers un App Service existant, ou dans un nouveau via un assistant.

visual studio

Du neuf pour IntelliCode et Python

En parallèle, Microsoft a mis à jour son extension IntelliCode pour y ajouter l’inférence des conventions de style et de formatage dans le code C#. Pour rappel, IntelliCode avait été présenté durant la conférence Build et permet de fournir des suggestions IntelliSense basées sur du machine learning, selon le code utilisé et le contexte. Selon Microsoft, cet ajout devrait permettre aux équipes une plus grande cohérence du code au sein d’une même structure.

Visual Studio Code a également enrichi son extension IntelliCode. Depuis fin juillet, elle prend en charge Python. Le fonctionnement est le même que précédemment : l’inférence se fait en fonction du contexte, plutôt que de fournir l’autocomplétion sur tous les éléments possibles.

La gestion du Python passe par le Python Language Server, un composant qui doit à terme permettre la gestion du langage de script dans d’autres outils. Dans Visual Studio Code, IntelliCode réclamera d’ailleurs l’activation de ce composant. Le but est à terme d’externaliser le support d’IntelliSense pour Python, jusqu’à présent réservé au seul Visual Studio classique. Les utilisateurs de VSC récupèrent donc plusieurs bénéfices au passage, dont la détection des erreurs de syntaxe ou encore des avertissements quand les modules ne sont pas trouvés.

visual studio

TypeScript 3.0 : destination unknown

TypeScript est pour rappel un surensemble typé et open source (licence Apache 2.0) de JavaScript. Son essor est important, surtout depuis que la mouture 2.0 a été poussée par Google comme voie royale pour son framework Angular. La version 3.0 finale est sortie le 30 juillet, avec d’importants apports.

L’un des plus importants est organisationnel, puisqu’un projet peut maintenant référencer d’autres projets. Un fichier tsconfig.json peut ainsi en référencer d’autres. Les cas d’applications sont nombreux, notamment la reprise d’un ancien code ou plus simplement la division d’un projet en plusieurs petits.

Un nouveau type fait également son entrée : unknown. Comme expliqué par l’éditeur dans son billet, il ressemble à any, mais avec plusieurs différences importantes. On peut ainsi lui assigner n’importe quelle valeur, mais pas accéder à ses propriétés, les appeler ou les construire. Les développeurs devraient gagner du temps en évitant d’avoir à mettre des barrières de sécurité autour de variables any dans certains cas.

Entre autres ajouts, citons également l'extraction et la propagation des listes de paramètres avec des n-uplets, des types enrichis pour les tuples, des améliorations diverses dans les messages d’erreurs, le support de defaultProps dans JSX ou encore plusieurs nouveaux Quick Fix.

Comme toujours avec TypeScript, on peut l’installer via NuGet ou npm (npm install -g typescript). Cette version 3.0 est supportée par Visual Studio 2017 (15.2 au moins), 2015 (avec Update 3), Visual Studio Code (dernière version uniquement) et Sublime Text 3 (via PackageControl).

F# 4.5 s'aligne avec .NET Core 2.1

Un autre langage évolue chez Microsoft : F#. Très différent du premier il est pour rappel dédié à la programmation fonctionnelle. Comme tous les langages #, il est conçu pour la plateforme .NET et est donc très orienté objet, en plus d’être impératif et typé.

La mouture 4.5, sortie mi-août, n’apporte pas autant de fonctionnalités que TypeScript 3.0. Il s’agit surtout d’un alignement avec les nouveautés apparues dans .NET Core 2.1, et plus particulièrement Span. F# 4.5 débloque par exemple les fonctions NativePtr.ofVoidPtr et NativePtr.toVoidPtr, les types inref<'T> et outref<'T> ou encore la possibilité de produire des structures IsByRefLike et IsReadOnly.

L’ensemble doit permettre la création d’un code offrant de meilleures performances dans certains cas, mais au plus de plus grandes restrictions, comme l’explique l’éditeur dans un billet.

F# 4.5 est compatible avec Visual Studio 2017 (15.8 au moins), Visual Studio pour Mac et Visual Studio Code avec Ionide, dès lors que le dernier SDK.NET est installé (au moins la version 2.1.400).

.NET Core 3.0 : Microsoft veut connaître les API utilisées dans les applications Desktop

Lors de la conférence Build en mai dernier, Microsoft a évoqué une partie de ses plans pour la prochaine itération majeure de .NET Core. L’une des plus importantes nouveautés, outre les améliorations de performances, sera la prise en charge des applications Desktop de Windows. Un ajout de poids, puisqu’un projet .NET Core nécessite actuellement une réécriture complète.

Plus précisément, .NET Core 3.0 prendra en charge les Windows Forms, Windows Presentation Framework (WPF) et UWP XAML, ce qui permettra au framework d’aller au-delà des projets auquel il se destine habituellement, notamment les composants serveur et les pages web (via ASP.NET Core).

Le travail étant conséquent pour l’éditeur, il demande de l’aide aux développeurs via le Portability Analyzer. Ce petit outil (2,7 Mo) permet d’analyser le code d’une application pour en lister l’intégralité des API appelées. La liste est ensuite envoyée à Microsoft, qui souhaite s’en servir pour établir des priorités. En clair, toutes risquent donc de ne pas être supportées lorsque la mouture 3.0 initiale sera disponible courant 2019.

Le Portability Analyzer génère sa liste sous forme de tableau Excel, consultable évidemment par les développeurs. Il affiche un niveau de compatibilité générale avec .NET Core 3.0 et pointe les API déjà supportées, puis celles ne l’étant pas.

visual studio

L’objectif de Microsoft est clair : motiver les développeurs .NET à migrer vers Core 3.0 en leur permettant notamment de garder les interfaces déjà conçues. L’éditeur vante d’ailleurs les avantages d’un tel saut, avec les améliorations de performances, le support des derniers outils, les possibilités de déploiement, d’utiliser ou simplement tester une nouvelle version du Core pour une seule application.

La route sera longue dans tous les cas, comme en témoignent les commentaires sur l’annonce de Microsoft. On peut y voir par exemple que COM Interop est déjà supporté, mais pas ClickOnce, pourtant largement utilisé dans les déploiements. Plusieurs développeurs réclament également que d’autres formats soient proposés en plus du seul tableau Excel (tout le monde n’ayant pas la suite Office).

Écrit par Vincent Hermann

Tiens, en parlant de ça :

Sommaire de l'article

Introduction

Visual Studio 2017 : nombreux ajouts pour la mise à jour 15.8

Visual Studio Code 1.26 introduit un fil d’Ariane pour les fichiers et symboles

Visual Studio for Mac 7.6 se veut plus fiable et rapide

Du neuf pour IntelliCode et Python

TypeScript 3.0 : destination unknown

F# 4.5 s'aligne avec .NET Core 2.1

.NET Core 3.0 : Microsoft veut connaître les API utilisées dans les applications Desktop

Commentaires (6)


&gt; Cette version [Typescript] 3.0 est supportée par Visual Studio 2017 (15.2 au moins),

2015 (avec Update 3), Visual Studio Code (mais uniquement en Insider

pour l’instant) et Sublime Text 3 (via PackageControl)



…et WebStorm (de Jetbrains)


&gt; il est pour rappel dédié à la programmation fonctionnelle. Comme tous

les langages #, il est conçu pour la plateforme .NET et est donc très

orienté objet, en plus d’être impératif et typé.

&nbsp;

C’est pas antinomique d’être fonctionnel et impératif ? Vous vouliez peut être dire “déclaratif” ?


On peut toujours “hybrider” les paradigmes. En l’occurrence, F# inclut les boucles et les assignations (pas par défaut) et hop! une touche d’impératif. De la même manière que ce bon vieux C permet de passer des fonctions en paramètre d’autres fonctions, et hop! une touche de fonctionnel.


Une version 64bit de Visual Studio se fait toujours attendre :/








le podoclaste a écrit :



On peut toujours “hybrider” les paradigmes.

&nbsp;



&nbsp;Non seulement on peut, mais ça fait même explicitement partie du design d’OCaml, dont F# est plus que fortement inspiré.



Excellente nouvelle pour .NET Core !