Découverte Visual Studio 2017 à travers la migration d'un projet ASP.Net Core (VS 2015)
Cela n'a pas du vous échaper si vous êtes développeur, la nouvelle version de Visual Studio 2017 est sortie, et qui dit nouvelle version, dit obligatoirement nouveautés.
Les nouveautés annoncées
Vous pouvez retrouver un aperçu de ces nouveautés sur la page produit du site de Microsoft. Ces nouveautés présentées dans la page produit, sont d'ordre générale, elles permettent d'améliorer votre expérience d'utilisation de cet IDE, en améliorant le produit, en le robustifiant ... Beaucoup s'accorde à dire que Visual Studio est un des meilleurs IDE du marché, il a cependant quelques faiblesses, et peut parfois même arriver à faire s'énerver le plus calme des développeurs avec ses fenêtres "Visual Studio ne répond pas". Ces faiblesses sont encore plus flagrantes avec les projets à base de .Net Core, lors de la sortie de ce dernier les deux ne cohabitaient pas très bien. Les mises à jour faisant, cette cohabitation est devenue plus étroite, mais elle n'est pas encore parfaite. Voici ce qu'annonce la release note de Visual Studio 2017 concernant les projets .NET Core et ASP.NET Core :
Les fonctionnalités principales de cette version sont les suivantes :
- Prise en charge de MSBuild pour les projets .NET Core, avec un format de projet csproj simplifié qui facilite les modifications manuelles sans qu’il soit nécessaire de décharger le projet.
- Pour modifier un fichier .csproj .NET Core, il suffit de cliquer avec le bouton droit sur le projet dans l’Explorateur de solutions et de choisir « Modifier ».
- Prise en charge des caractères génériques de fichier dans le fichier projet. Il est inutile d’énumérer tous les noms de fichiers de code source, ce qui permet au fichier csproj de conserver une taille compacte.
- Les références de package NuGet font désormais partie du fichier csproj, regroupant toutes les références de projet dans un seul fichier.
- Interopérabilité entre les projets .NET Core, .NET Standard et .NET Framework. Par exemple, un projet .NET Core peut ajouter une référence de projet à un projet .NET Standard.
- Plusieurs frameworks cibles multicibles dans un même projet.
- Les projets .NET Core project.json existants sont migrés automatiquement vers csproj quand ils sont ouverts dans Visual Studio. Vous pouvez aussi les migrer manuellement à l’aide de l’Interface de ligne de commande (CLI) .NET. (https://go.microsoft.com/fwlink/?linkid=842521)
- Configurez facilement l’intégration continue de builds pour votre application ASP.NET Core avec la prise en charge de Docker et de la livraison continue de builds à vos services de conteneur Azure à partir de l’IDE Visual Studio.
Il semblerait donc que les projets ASP.NET Core soient mieux intégrés dans cette dernière mouture de Visual Studio, mais qu'il est nécéssaire de migrer les projets pour qu'ils soient compatibles avec 2017. Bien que cette migration soit annoncée comme automatique, il est obligatoire que toutes les personnes travaillant sur votre projet utilisent également VS 2017, il faut donc s'assurer de cela avant d'effectuer la migration. Voyons comment faire une migration sur un projet ASP.NET Core.
Migration d'un projet ASP.NET Core vers 2017
Etape 1 : l'installation de Visual Studio 2017
Dans un premier temps, il faut installer Visual Studio 2017, la nouvelle interface d'installation expose les grands modules que vous pouvez activer et ainsi personnaliser votre Visual Studio 2017 en fonction de l'utilisation que vous en faites.
L'installation est très rapide (environ 30 minutes) et ce en ayant ajouté plusieurs modules (5 ou 6) bien sûr, tout dépend de votre machine. Pour information, même après installation de Visual Studio 2017, mon projet ASP.NET Core fonctionnait toujours sur Visual Studio 2015, à condition de ne pas l'avoir ouvert avec 2017 évidemment.
Etape 2 : La migration automatique
Nous allons donc essayer la fonctionnalité de migration automatique des xproj en csproj.Quand on essait d'ouvrir un projet ASP.NET Core avec Visual Studio 2017, il affiche directement une fenêtre vous avertissant que le projet n'est pas compatible et qu'il faut effectuer la migration. Un simple clic sur OK et la migration des projets sélectionnés s'effectue.
Une fois la migration des projets terminé, un rapport de migration est créé et s'affiche, il vous permet de voir des détails sur la migration, et par projet de vérifier si la migration s'est effectuée correctement ou non. Dans mon cas, sur les 37 projets que contient ma solution, tous les projets selon le rapport ont bien été migrés. Je me suis dit alors c'est chouette, c'est super rapide !
Etape 3 : La migration ce n'est pas automatique
Au vu du titre, vous vous doutez que ça ne s'est pas passé comme prévu. En effet, de prime abort tous mes projets sont présents dans la solution et ils build sans soucis ! Mais en lançant mon application ASP.NET Core pour valider cette migration, catastrophe ... L'application se lance sans soucis mais au runtime, des exceptions sont levées notamment de dlls introuvables, de port déjà utilisé ...
En effet, dans mon application j'avais défini une url pour mon api en utilisant la variable d'environnement "ASPNETCORE_URLS", il semblerait que celle-ci ne soit plus utilisée (elle fonctionnait sur VS 2015) et soit remplacer par "applicationUrl". Vous pouvez la renseigner en utilisant l'interface "Propriétés" du projet et en allant dans l'onglet "Debug", puis dans la partie "Web Server Settings". Pour ce qui est des dlls introuvables, j'ai dû ajouter le package "System.Net.Http" depuis Nuget, cet ajout a réglé tous les soucis et les exceptions au runtime.
Cependant attention, la migration pouvant échouer, il est préférable de réaliser une sauvegarde de votre travail avant d'effectuer celle-ci pour revenir aisément a une version antérieure. Il est également interessant de savoir que sur une même solution, l'outil de migration peut fonctionner assez aléatoirement, dans le premier essai que j'ai effectué, un projet de ma solution n'avait pas été correctement migré, en supprimant et en reclonant mon repo git, et en réeffectuant l'opération une seconde fois, tous les projets ont été migrés avec succès.
Bon courage !
Commentaires