← tous les articles

.NET

Comment fonctionne la modernisation .NET avec le Copilot Upgrade Agent

Microsoft a publié un cours gratuit sur la mise à niveau d'applications .NET Framework vers .NET 10, avec la documentation complète du Copilot modernization agent. Voici ce que fait vraiment le workflow assess, plan, execute.

Comment fonctionne la modernisation .NET avec le Copilot Upgrade Agent

Microsoft a publié un cours gratuit appelé .NET Modernization for Beginners, accompagné d'une section de documentation complète pour le Copilot modernization agent autour duquel il est construit. Les deux sont un matériel vraiment bon, et la modernisation reçoit beaucoup moins de couverture que le fait de démarrer quelque chose de nouveau.

Pourquoi la modernisation est un vrai sujet

La plupart des contenus sur .NET partent d'un dossier vide. Choisissez la dernière version, choisissez vos patterns, allez-y. C'est la partie amusante, et c'est une fraction du travail réel dans l'industrie.

Une grande quantité de .NET en production tourne sur .NET Framework, écrit il y a des années par des gens prenant des décisions raisonnables pour le tooling de l'époque. Ces applications ont toujours besoin de maintenance, et finissent par devoir être déplacées, pour les support lifecycles, le security patching, la performance, le cloud hosting, ou simplement pour continuer à pouvoir recruter des gens qui veulent y travailler.

Mettre à niveau une application réelle est plus difficile que d'en démarrer une nouvelle, parce que la version du framework n'est jamais la partie difficile. La partie difficile, ce sont la douzaine de choses qui dépendaient silencieusement de l'ancien comportement.

Le workflow : assess, plan, execute

Toute l'approche est construite sur trois étapes, dans cet ordre, et cet ordre est l'idée utile.

Assessment examine la structure du projet, les dependencies et les code patterns, puis rapporte les breaking changes, les problèmes de compatibilité d'API, les patterns deprecated et l'étendue du travail.

Planning transforme cet assessment plus vos décisions confirmées en une spécification : stratégie d'upgrade, approche du refactoring, chemins de dependency, mitigations de risque.

Execution découpe le plan en tasks concrètes et séquentielles, chacune avec des critères de validation, si bien que chaque changement a une définition de « ça a marché ».

L'intérêt de séparer ces étapes, c'est qu'un assessment report est un outil de décision, pas un output à parcourir en diagonale. Le lire et décider ce qui est vraiment risqué, c'est la vraie compétence. Les modifications mécaniques sont la moitié facile.

Ce que couvre le cours

Cinq chapitres suivant cette forme :

  • 00 introduction et le workflow général
  • 01 assessment, en exécutant une analyse de compatibilité sur une app legacy
  • 02 planning, en transformant les constats en une stratégie priorisée
  • 03 execution, la migration elle-même
  • 04 déploiement de l'application modernisée sur Azure

Il fonctionne sur une application d'exemple appelée BookCatalog : une app ASP.NET MVC 5 legacy sur .NET Framework 4.8, amenée jusqu'à .NET 10. Utiliser un codebase réel avec des décisions accumulées compte, parce qu'un exemple jouet tout propre ne produirait pas les problèmes de compatibilité qui rendent l'étape d'assessment digne d'être apprise, pour commencer.

Les prérequis pour le suivre tel quel sont Windows 11, Visual Studio 2026, un abonnement GitHub Copilot, et les deux SDKs .NET Framework 4.8 et .NET 10.

Ce que l'agent prend en charge

Le modernization agent tourne dans Visual Studio, VS Code, la GitHub Copilot CLI, et sur GitHub.com. Vous le pointez vers une solution et décrivez ce que vous voulez :

Upgrade my solution to .NET 10
Convert to SDK-style
Upgrade from Newtonsoft.Json
Migrate my Web Forms app to Blazor

Les upgrade paths pris en charge couvrent plus qu'un simple saut vers la dernière version :

Source Cible
.NET Framework, toute version .NET 8 ou ultérieur
.NET Framework, toute version .NET Framework 4.8.1
.NET Core 1.x à 3.x .NET 8 ou ultérieur
.NET 5 ou ultérieur .NET 8 ou ultérieur

Au-delà des upgrades de version, il existe des scénarios ciblés pour des migrations spécifiques : Newtonsoft.Json vers System.Text.Json, System.Data.SqlClient vers Microsoft.Data.SqlClient, Azure Functions du modèle in-process vers le modèle isolated worker, Web Forms vers Blazor, et l'ajout du support Aspire.

Les types de projet couverts incluent ASP.NET Core avec MVC, Razor Pages et Web API, Web Forms, Blazor, Azure Functions, WPF, Windows Forms, WinUI, MAUI et Xamarin, les class libraries, les console apps, et les test projects sur MSTest, NUnit ou xUnit.

Le détail de design qui mérite l'attention

L'agent écrit son travail sur disque en Markdown, dans .github/upgrades/{scenarioId} :

assessment.md            analysis of the solution
upgrade-options.md       confirmed upgrade decisions
plan.md                  ordered task plan
tasks.md                 live progress dashboard
scenario-instructions.md persistent memory, preferences and decisions

Ces fichiers sont modifiables avant de le laisser continuer. C'est ce qui en fait un outil plutôt qu'un bouton magique : si l'assessment a mal interprété quelque chose, vous corrigez le Markdown et le plan suit votre correction.

Comme tout l'état vit dans ce dossier, le processus survit à la fermeture de l'IDE, et peut même être poursuivi dans un éditeur différent de celui où il a commencé. Il commit au fur et à mesure, donc annuler une mauvaise étape est une opération git ordinaire plutôt qu'un undo dont on espère qu'il marche.

Stratégies et contrôle du flux

Pendant l'assessment, l'agent recommande une des trois stratégies, et celle qui convient dépend de la forme de la solution :

  • Bottom-up met à niveau d'abord les leaf projects et remonte, pour les grandes solutions à dependency graphs profonds
  • Top-down met à niveau d'abord le projet applicatif puis corrige les dependencies, pour un feedback rapide sur l'app principale
  • All-at-once fait tout en une seule passe, pour les petites solutions

Il existe aussi deux flow modes. Automatic traverse toutes les étapes et ne s'arrête que sur de vrais blocages. Guided fait une pause à chaque frontière d'étape pour que vous puissiez revoir l'assessment, le plan et les tasks avant qu'il continue. Vous basculez entre les deux en cours d'exécution en disant « pause » ou « continue ».

Pourquoi ça vaut la peine de le savoir

Les upgrades de version sont la partie visible de la modernisation et la plus petite partie. Ce que ce matériel enseigne vraiment, c'est le processus autour : qu'un assessment produit un document avec lequel vous êtes censé argumenter, que la stratégie dépend du dependency graph plutôt que de la préférence, et que le travail doit être committé de façon incrémentale pour que chaque étape puisse être annulée.

Cette connaissance s'applique que vous utilisiez ou non le Copilot agent pour faire le travail, et c'est le genre de chose bien meilleure à avoir lue avant que ça devienne urgent que pendant la semaine où ça le devient.