.NET
Come funziona la modernizzazione .NET con il Copilot Upgrade Agent
Microsoft ha pubblicato un corso gratuito sull'aggiornare app da .NET Framework a .NET 10, più la documentazione completa del Copilot modernization agent. Ecco cosa fa davvero il workflow assess, plan, execute.
Microsoft ha pubblicato un corso gratuito chiamato .NET Modernization for Beginners, insieme a una sezione di documentazione completa per il Copilot modernization agent attorno a cui è costruito. Entrambi sono materiale genuinamente valido, e la modernizzazione riceve molta meno copertura di quanta ne riceva iniziare qualcosa di nuovo.
Perché la modernizzazione è un argomento vero
La maggior parte dei contenuti su .NET parte da una cartella vuota. Scegli l'ultima versione, scegli i tuoi pattern, via. È la parte divertente, ed è una frazione del lavoro reale nel settore.
Una grande quantità di .NET in produzione gira su .NET Framework, scritto anni fa da persone che prendevano decisioni ragionevoli per il tooling dell'epoca. Quelle applicazioni hanno ancora bisogno di manutenzione, e prima o poi devono essere spostate, per support lifecycle, security patching, performance, cloud hosting, o semplicemente per continuare a poter assumere persone che vogliono lavorarci.
Aggiornare un'applicazione reale è più difficile che iniziarne una nuova, perché la versione del framework non è mai la parte difficile. La parte difficile sono la dozzina di cose che dipendevano silenziosamente dal vecchio comportamento.
Il workflow: assess, plan, execute
L'intero approccio è costruito su tre fasi, in quest'ordine, e l'ordine è l'idea utile.
Assessment esamina la struttura del progetto, le dependency e i code pattern, poi riporta breaking change, problemi di compatibilità delle API, pattern deprecated e l'ampiezza del lavoro.
Planning trasforma quell'assessment più le tue decisioni confermate in una specifica: strategia di upgrade, approccio al refactoring, percorsi delle dependency, mitigazioni del rischio.
Execution scompone il piano in task concrete e sequenziali, ciascuna con criteri di validazione, così ogni modifica ha una definizione di "questo ha funzionato".
Il senso di separarli è che un assessment report è uno strumento decisionale, non un output da scorrere velocemente. Leggerlo e decidere cosa sia davvero rischioso è la competenza. Le modifiche meccaniche sono la metà facile.
Cosa copre il corso
Cinque capitoli che seguono questa forma:
- 00 introduzione e il workflow generale
- 01 assessment, eseguendo l'analisi di compatibilità su un'app legacy
- 02 planning, trasformando i risultati in una strategia con priorità
- 03 execution, la migrazione vera e propria
- 04 deploy dell'applicazione modernizzata su Azure
Funziona su un'applicazione di esempio chiamata BookCatalog: un'app ASP.NET MVC 5 legacy su .NET Framework 4.8, portata a .NET 10. Usare un codebase reale con decisioni accumulate conta, perché un esempio giocattolo pulito non produrrebbe i problemi di compatibilità che rendono la fase di assessment degna di essere imparata, prima di tutto.
I prerequisiti per seguirlo come scritto sono Windows 11, Visual Studio 2026, un abbonamento GitHub Copilot, e gli SDK sia di .NET Framework 4.8 sia di .NET 10.
Cosa gestisce l'agent
Il modernization agent gira in Visual Studio, VS Code, nella GitHub Copilot CLI, e su GitHub.com. Lo punti verso una solution e descrivi cosa vuoi:
Upgrade my solution to .NET 10
Convert to SDK-style
Upgrade from Newtonsoft.Json
Migrate my Web Forms app to Blazor
Gli upgrade path supportati coprono più del semplice salto alla versione più recente:
| Origine | Destinazione |
|---|---|
| .NET Framework, qualsiasi versione | .NET 8 o successivo |
| .NET Framework, qualsiasi versione | .NET Framework 4.8.1 |
| .NET Core da 1.x a 3.x | .NET 8 o successivo |
| .NET 5 o successivo | .NET 8 o successivo |
Oltre agli upgrade di versione ci sono scenari mirati per migrazioni specifiche: Newtonsoft.Json verso System.Text.Json, System.Data.SqlClient verso Microsoft.Data.SqlClient, Azure Functions dal modello in-process al modello isolated worker, Web Forms verso Blazor, e l'aggiunta del supporto Aspire.
I tipi di progetto coperti includono ASP.NET Core con MVC, Razor Pages e Web API, Web Forms, Blazor, Azure Functions, WPF, Windows Forms, WinUI, MAUI e Xamarin, class library, console app, e test project su MSTest, NUnit o xUnit.
Il dettaglio di design che vale la pena notare
L'agent scrive il proprio lavoro su disco come Markdown, in .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
Quei file sono modificabili prima di lasciarlo proseguire. È questo che lo rende uno strumento invece di un pulsante magico: se l'assessment ha letto male qualcosa, correggi il Markdown e il piano segue dalla tua correzione.
Dato che tutto lo stato vive in quella cartella, il processo sopravvive alla chiusura dell'IDE, e può persino essere continuato in un editor diverso da quello in cui è iniziato. Fa commit man mano che procede, quindi tornare indietro da un passo sbagliato è un'operazione git ordinaria invece di un undo che speri funzioni.
Strategie e controllo del flusso
Durante l'assessment l'agent raccomanda una di tre strategie, e quale si adatta dipende dalla forma della solution:
- Bottom-up aggiorna prima i leaf project e risale, per solution grandi con dependency graph profondi
- Top-down aggiorna prima il progetto dell'applicazione poi sistema le dependency, per un feedback rapido sull'app principale
- All-at-once fa tutto in un solo passaggio, per solution piccole
Ci sono anche due flow mode. Automatic attraversa tutte le fasi e si ferma solo davanti a blocchi genuini. Guided si mette in pausa a ogni confine di fase così puoi rivedere l'assessment, il piano e le task prima che proceda. Passi dall'uno all'altro a metà esecuzione dicendo "pause" o "continue".
Perché vale la pena saperlo
Gli upgrade di versione sono la parte visibile della modernizzazione e la parte più piccola. Quello che questo materiale insegna davvero è il processo attorno: che un assessment produce un documento con cui sei tenuto a discutere, che la strategia dipende dal dependency graph invece che dalla preferenza, e che il lavoro va committato in modo incrementale così ogni passo può essere annullato.
Questa conoscenza vale sia che tu usi il Copilot agent per fare il lavoro sia che non lo usi, ed è il genere di cosa molto meglio averla letta prima che diventi urgente piuttosto che durante la settimana in cui lo diventa.