Migrer vos applications vers .NET 5 avec l’assistant de migration (partie 1)

Même si toutes ne savent pas comment, les sociétés qui développent des logiciels souhaitent suivre le rythme effréné des montées de version, que ce soit des OS, des frameworks ou des bibliothèques. L’objectif est de ne pas être larguer, de pouvoir parfois gagner en performances, résoudre quelques problèmes de sécurité du framework ou encore permettre d’utiliser des technologies plus modernes (HTTP 2, etc) lors de ces passages.

Pour que les équipes de développement, l’objectif sera surtout de suivre les évolutions, d’identifier les breaking change, de refactoriser le code et également de garder la motivation de maintenir, ce qui deviendra quoiqu’on en veuille : ‘une vieille application à maintenir’.

Pour la société, l’objectif sera surtout de minimiser le coût de cette montée de version, qui si elle n’apporte pas de valeur ajoutée pour les utilisateurs (hormis de meilleurs performances et une sécurité parfois renforcé, concernant le framework en lui-même aka cela n’améliorera pas votre code dans ce domaine par magie) permet d’avoir sur le marché des ressources plus à même d’intervenir sur des technologies récentes qu’anciennes.

MAIS … la stratégie est souvent de faire un POC de mise à niveau d’un projet ‘pas trop gros’, et de se dire ‘voici une application A’, on essaye, et si ça ne coûte pas trop cher on fera l’application B, C, etc. Le biais dans lequel l’entreprise risque de tomber est qu’elle pensera que calculer le temps d’upgrade d’un premier projet, sur lequel l’équipe essuie tous les plâtres de la migration, pourra servir de référence de charges/coûts pour les suivantes. C’est du bon sens … mais c’est ce qui se passe tous les jours, dans d’autres domaines dans les sociétés …

En résumé, la migration d’un projet vers .NET Core 5 prendra beaucoup du temps et la décision sera de ne pas migrer les projets amenant une montagne de ‘vieilles applications à maintenir’ à être maintenu par des personnes dont la motivations égalera celle d’un paresseux au repos. Mais tada … Microsoft à créer l’upgrade assistant pour vous afin de vous aider au maximum à pouvoir évaluer la migration et vous assister dans cette tâche, surtout sur les parties simples et fastidieuses d’une migration de code. Mais attention, cet outil est votre assistant et le magicien c’est vous, pas lui !

Installation

L’assistant de migration est un outil dotnet (dotnet tool) qu’il suffit d’installer de cette manière :

image

Troubleshooting

Erreur “Impossible de charger l’index de service pour la source “/ “Unable to load the service index for source”

Cette erreur arrive lorsque vous avez déclaré un source Nuget dans votre configuration Nuget dont l’outil n’arrive pas à accéder (mauvaise URL, credentials outdated, etc).

image

Dans ce cas, rien de plus simple vous avez deux options :

1. Utilisez l’argument --ignore-failed-sources dans la ligne de commande

2. Supprimer la source dans votre fichier de configuration Nuget qui se trouve dans :

image

Visual Studio Core for PowerShell 7

With the release of “PowerShell Core 7”, now just “PowerShell 7”, the VS Code team just released a major update of the PS extension for VS Code.

In short, what’s new :

  • ISE Compatibility module
  • Syntax Highlighting, Multi-Line Editing and Back Search in the Integrated Console
  • Performance Improvements
  • Take care of some breaking change

You can find the full announcement here : https://devblogs.microsoft.com/powershell/visual-studio-code-for-powershell-7/

How to install PowerShell Core 7 on Windows and Linux

PowerShell is a must have skill for a developer or system administrator working in the Microsoft ecosystem, but not only. With the release of the version 7 of PowerShell Core, the improvements and new features make more us more powerful to to what we need to be do for our clients.

The PowerShell team announced PowerShell 7 here. PowerShell 7 is now built on .NET Core 3 and brings back many APIs required by modules built on .NET Framework, so now they work with .NET Core runtime and PowerShell 7 ! This is a huge improvement for what we can do with PS.

Here is how you can install and update PowerShell Core 7 on Windows and Linux (preview) from officiel documentation :

Windows 10 install

1. On Windows 10, you can execute this simple command line to install PS Core 7 with a PS instance (with administrator rights) :

iex « & { $(irm https://aka.ms/install-powershell.ps1) } –UseMSI -Quiet »

image

Note : If you install a previous version of PowerShell Core (PS6 for example) and you use –Quiet option, it will fail to install PS7. In that case, remove the –Quiet option and follow the installer UI instructions.

2. To launch a PSC7 instance, either right click in a directory ‘PowerShell 7 > Open here’ or just type ‘pwsh’ :

image

image

Linux install

PowerShell 7 supports the following operating systems on x64, including:

  • Windows 7, 8.1, and 10
  • Windows Server 2008 R2, 2012, 2012 R2, 2016, and 2019
  • macOS 10.13+
  • Red Hat Enterprise Linux (RHEL) / CentOS 7+
  • Fedora 29+
  • Debian 9+
  • Ubuntu 16.04+
  • openSUSE 15+
  • Alpine Linux 3.8+

Note : latest version 19.10 is not supported :
image

1. In a bash terminal, just execute the following command line :

wget https://aka.ms/install-powershell.sh; sudo bash install-powershell.sh; rm install-powershell.sh

2. To launch a PSC7 instance in the bash just type ‘pwsh’ :

PS 7 works fine even on a low Memory/CPU computer Smile

For Linux, you can see the documentation here : https://docs.microsoft.com/fr-fr/powershell/scripting/install/installing-powershell-core-on-linux?view=powershell-7.