Delen via


Een .NET-app upgraden met GitHub Copilot modernisering

GitHub Copilot modernisering is een ai-agent die .NET projecten upgradet naar nieuwere versies en toepassingen migreert naar Azure. In dit artikel wordt uitgelegd hoe u uw .NET toepassingen bijwerkt met een gestructureerde werkstroom in drie fasen: evaluatie, planning en uitvoering.

De moderniseringsagent analyseert uw projecten en afhankelijkheden, maakt gedetailleerde upgradedocumentatie in elke fase en helpt bij het oplossen van code tijdens het proces. De agent biedt ondersteuning voor het upgraden van oudere .NET versies naar de nieuwste versie, inclusief migraties van .NET Framework naar moderne .NET.

Vereiste voorwaarden

Stel GitHub Copilot modernisering in uw ontwikkelomgeving in voordat u een upgrade start. Zie Install GitHub Copilot modernization voor installatiestappen.

De upgrade starten

Als u een upgrade wilt starten, gebruikt u de modernize-dotnet-agent in Copilot:

  1. Open uw .NET project of oplossing in uw ontwikkelomgeving.

  2. Start de agent met behulp van een van de volgende methoden:

    • Visual Studio: klik met de rechtermuisknop op de oplossing of het project in Solution Explorer en selecteer Modernize. Of open het venster GitHub Copilot Chat en typ @Modernize.
    • Visual Studio Code: Open het deelvenster GitHub Copilot Chat en typ @modernize-dotnet.
    • GitHub Copilot CLI: typ @modernize-dotnet gevolgd door uw upgrade- of migratieaanvraag.
    • GitHub.com: gebruik de modernize-dotnet coderingsagent in uw opslagplaats.
  3. Laat de agent weten wat er moet worden bijgewerkt of gemigreerd.

Wanneer u de upgrade start, verzamelt Copilot vooraf initialisatiegegevens: de doelframeworkversie, de Git-vertakkingsstrategie en de werkstroommodus (automatisch of begeleid door u). Copilot vervolgens uw project beoordeelt en een werkstroom met drie fasen uitvoert, waarbij Markdown-bestanden worden geschreven voor elke fase onder .github/upgrades/{scenarioId} in uw opslagplaats. De {scenarioId} waarde is een unieke id voor het upgradetype, zoals dotnet-version-upgrade. Als .github/upgrades/{scenarioId} al bestaat uit een eerdere poging, Copilot vraagt of u wilt doorgaan of opnieuw wilt beginnen.

De drie fasen zijn:

  • Evaluatiefase. Copilot uw project onderzoekt, strategiebeslissingen voor uw beoordeling presenteert en bevestigde beslissingen opslaat. Pas de evaluatie aan voordat u doorgaat.
  • Planningsfase. Copilot maakt een gedetailleerde specificatie met de stappen voor het bereiken van de doelupgrade.
  • Uitvoeringsfase. Copilot deelt het plan op in sequentiële taken en voert de upgrade uit.

De evaluatie beoordelen

De evaluatie onderzoekt uw projectstructuur, afhankelijkheden en codepatronen om te bepalen wat er moet worden gewijzigd. Copilot start automatisch de evaluatie en genereert een assessment.md-bestand in .github/upgrades/{scenarioId}.

De evaluatie bevat belangrijke wijzigingen, API-compatibiliteitsproblemen, afgeschafte patronen en upgradebereik. In het volgende voorbeeld ziet u een deel van een evaluatie voor een ASP.NET Core project dat wordt geupdate van .NET 6.0 naar .NET 10.0:

# Projects and dependencies analysis

This document provides a comprehensive overview of the projects and their dependencies in the context of upgrading to .NETCoreApp,Version=v10.0.

## Table of Contents

- [Executive Summary](#executive-Summary)
  - [Highlevel Metrics](#highlevel-metrics)
  - [Projects Compatibility](#projects-compatibility)
  - [Package Compatibility](#package-compatibility)
  - [API Compatibility](#api-compatibility)
- [Aggregate NuGet packages details](#aggregate-nuget-packages-details)
- [Top API Migration Challenges](#top-api-migration-challenges)
  - [Technologies and Features](#technologies-and-features)
  - [Most Frequent API Issues](#most-frequent-api-issues)
- [Projects Relationship Graph](#projects-relationship-graph)
- [Project Details](#project-details)

  - [MvcMovie.Tests\MvcMovie.Tests.csproj](#mvcmovietestsmvcmovietestscsproj)
  - [MvcMovie\MvcMovie.csproj](#mvcmoviemvcmoviecsproj)
  - [RazorMovie.Tests\RazorMovie.Tests.csproj](#razormovietestsrazormovietestscsproj)
  - [RazorMovie\RazorMovie.csproj](#razormovierazormoviecsproj)
  - [WpfMovie.Tests\WpfMovie.Tests.csproj](#wpfmovietestswpfmovietestscsproj)
  - [WpfMovie\WpfMovie.csproj](#wpfmoviewpfmoviecsproj)

...

De evaluatie controleren en aanpassen:

  1. Open het assessment.md bestand in .github/upgrades/{scenarioId}.
  2. Bekijk de geïdentificeerde brekende veranderingen en compatibiliteitsproblemen.
  3. Voeg projectspecifieke context of problemen toe aan het document.
  4. Vertel Copilot om door te gaan naar de planningsfase.

Upgradeopties bekijken

Na de evaluatie evalueert Copilot uw oplossing en presenteert u beslissingen over de upgradestrategie voor uw beoordeling. De agent raadt een benadering aan op basis van de structuur van uw project en slaat bevestigde beslissingen op in upgrade-options.md in .github/upgrades/{scenarioId}.

De opties zijn doorgaans:

  • Upgradestrategie. Bottom-up (eerst bladprojecten), top-down (eerst toepassing) of alles-in-één-keer (alle projecten in één keer).
  • Benadering voor projectmigratie. Herschrijf ter plaatse of naast elkaar migratie.
  • Modernisering van technologie. Of u technologieën zoals Entity Framework (EF6 naar EF Core), afhankelijkheidsinjectie, logboekregistratie en configuratie wilt upgraden.
  • Pakketbeheer. Of er centrale pakketbeheer moet worden ingevoerd.
  • Compatibiliteitsafhandeling. Niet-ondersteunde API's, incompatibele pakketten en platformspecifieke functionaliteit aanpakken.

Bekijk de voorgestelde opties en bevestig of overschrijf ze. Vertel Copilot door te gaan naar de planningsfase.

Begin met plannen en bekijk het plan

De planningsfase converteert de evaluatie en uw bevestigde upgradeopties naar een gedetailleerde specificatie waarin wordt uitgelegd hoe u elk probleem kunt oplossen. Wanneer u Copilot vertelt om door te gaan met plannen, wordt er een plan.md-bestand gegenereerd in .github/upgrades/{scenarioId}. De agent maakt ook een scenario-instructions.md bestand waarin voorkeuren, beslissingen en aangepaste instructies voor de upgrade worden opgeslagen.

Het plan documenteert upgradestrategieën, herstructureringsmethoden, afhankelijkheidsupgrades en risicobeperking. In het volgende voorbeeld ziet u een deel van een plan voor een ASP.NET Core project:

# .NET 10 Upgrade Plan

## Table of Contents

- [Executive Summary](#executive-summary)
- [Migration Strategy](#migration-strategy)
- [Detailed Dependency Analysis](#detailed-dependency-analysis)
- [Project-by-Project Plans](#project-by-project-plans)
- ... <removed to save space> ...
- ...

---

## Executive Summary

### Scenario Description
Upgrade all projects in the MvcMovieNet6 solution from .NET 6 to .NET 10 (Long Term Support). The solution contains:
- **RazorMovie**: ASP.NET Core Razor Pages application (primary focus)
- **MvcMovie**: ASP.NET Core MVC application
- **WpfMovie**: Windows Presentation Foundation desktop application
- **3 Test Projects**: Unit test projects for each application

### Scope & Current State
- **6 projects** requiring framework upgrade (net6.0 → net10.0)
- **1,862 total lines of code** across 54 files
- **16 NuGet packages** (6 require updates, 10 compatible)
- **65 identified issues** (1 security vulnerability, 1 deprecated package, 51 WPF API issues, minor behavioral changes)
- **All projects are SDK-style** (modern project format)

...

Het plan controleren en aanpassen:

  1. Open het plan.md bestand in .github/upgrades/{scenarioId}.

  2. Bekijk de upgradestrategieën en afhankelijkheidsupdates.

  3. Bewerk het plan om de upgradestappen aan te passen of voeg indien nodig context toe.

    Waarschuwing

    Het plan is afhankelijk van projectafhankelijkheden. De upgrade slaagt niet als u het plan zodanig wijzigt dat het migratiepad niet kan worden voltooid. Als Project A bijvoorbeeld afhankelijk is van Project B en u Project B uit het upgradeplan verwijdert, kan het upgraden van Project A mislukken.

  4. Laat Copilot naar de uitvoeringsfase gaan.

De uitvoering starten en de upgrade uitvoeren

De uitvoeringsfase breekt het plan in opeenvolgende, concrete taken met validatiecriteria. Wanneer u Copilot vertelt om door te gaan met de uitvoering, wordt er een tasks.md-bestand gegenereerd in .github/upgrades/{scenarioId}.

In de takenlijst wordt elke taak beschreven en hoe Copilot een geslaagde validatie uitvoert. In het volgende voorbeeld ziet u een takenlijst voor een oplossing met ASP.NET Core en WPF projecten:

# MvcMovieNet6 .NET 10 Upgrade Tasks

## Overview

This document tracks the execution of the MvcMovieNet6 solution upgrade from .NET 6 to .NET 10. All projects will be upgraded simultaneously in a single atomic operation.

**Progress**: 0/3 tasks complete (0%) ![0%](https://progress-bar.xyz/0)

---

## Tasks

### [ ] TASK-001: Verify prerequisites
**References**: Plan §Phase 0

- [ ] (1) Verify .NET 10 SDK installed per Plan §Phase 0
- [ ] (2) .NET 10 SDK meets minimum requirements (**Verify**)

---

### [ ] TASK-002: Atomic framework and package upgrade with compilation fixes
**References**: Plan §Phase 1, Plan §Package Update Reference, Plan §Breaking Changes Catalog, Plan §Project-by-Project Plans

- [ ] (1) Update TargetFramework to net10.0 in MvcMovie.csproj, MvcMovie.Tests.csproj, RazorMovie.csproj, RazorMovie.Tests.csproj per Plan §Phase 1
- [ ] (2) Update TargetFramework to net10.0-windows in WpfMovie.csproj, WpfMovie.Tests.csproj per Plan §Phase 1
- [ ] (3) All project files updated to target framework (**Verify**)
- [ ] (4) Update package references per Plan §Package Update Reference (MvcMovie: EF Core 10.0.1, Code Generation 10.0.0; RazorMovie: HtmlSanitizer 9.0.889 security fix)
- [ ] (5) All package references updated (**Verify**)
- [ ] (6) Restore all dependencies across solution
- [ ] (7) All dependencies restored successfully (**Verify**)
- [ ] (8) Build solution and fix all compilation errors per Plan §Breaking Changes Catalog (focus: BinaryFormatter removal in WpfMovie, WPF control API binary incompatibilities, UseExceptionHandler behavioral changes, HtmlSanitizer API changes)
- [ ] (9) Solution builds with 0 errors (**Verify**)
- [ ] (10) Commit changes with message: "TASK-002: Complete atomic upgrade to .NET 10 (all projects, packages, and compilation fixes)"

---

### [ ] TASK-003: Run full test suite and validate upgrade
**References**: Plan §Phase 2, Plan §Testing & Validation Strategy

- [ ] (1) Run tests in MvcMovie.Tests, RazorMovie.Tests, and WpfMovie.Tests projects
- [ ] (2) Fix any test failures (reference Plan §Breaking Changes Catalog for common issues: HtmlSanitizer behavior, BinaryFormatter replacement, framework behavioral changes)
- [ ] (3) Re-run all tests after fixes
- [ ] (4) All tests pass with 0 failures (**Verify**)
- [ ] (5) Commit test fixes with message: "TASK-003: Complete testing and validation for .NET 10 upgrade"

De upgrade uitvoeren:

  1. Geef Copilot opdracht om de upgrade te starten.
  2. Bewaak de voortgang door het bestand tasks.md te bekijken terwijl Copilot taakstatussen bijwerkt.
  3. Als Copilot een probleem ondervindt dat niet kan worden opgelost, biedt dan de gevraagde hulp aan.
  4. Op basis van uw beslissingen en wijzigingen past Copilot zijn strategie aan de resterende taken aan en vervolgt de upgrade.

Copilot wijzigingen doorvoert volgens de Git-strategie die u tijdens de pre-initialisatie hebt geconfigureerd: per taak, per groep taken of aan het einde.

De upgrade controleren

Wanneer de upgrade is voltooid, worden in Copilot aanbevolen volgende stappen in het chatantwoord weergegeven. Controleer het tasks.md bestand in .github/upgrades/{scenarioId} voor de status van elke stap.

In het volgende voorbeeld ziet u voltooide taken voor een ASP.NET Core projectupgrade:

# MvcMovieNet6 .NET 10 Upgrade Tasks

## Overview

This document tracks the execution of the MvcMovieNet6 solution upgrade from .NET 6 to .NET 10. All projects will be upgraded simultaneously in a single atomic operation.

**Progress**: 3/3 tasks complete (100%) ![0%](https://progress-bar.xyz/100)

---

## Tasks

### [✓] TASK-001: Verify prerequisites *(Completed: 2025-12-12 21:09)*
**References**: Plan §Phase 0

- [✓] (1) Verify .NET 10 SDK installed per Plan §Phase 0
- [✓] (2) .NET 10 SDK meets minimum requirements (**Verify**)

...

De upgrade controleren:

  1. Controleer de uiteindelijke taakstatus in tasks.md.
  2. Los eventuele mislukte tests of compilatiefouten op.
  3. Zorg ervoor dat alle bijgewerkte NuGet-pakketten compatibel zijn met uw toepassing.
  4. Test uw toepassing grondig om te controleren of de upgrade is voltooid.
  5. Pas nieuwe functies en verbeteringen toe die beschikbaar zijn in de bijgewerkte .NET versie.