Freigeben über


Aktualisieren einer .NET-App mit GitHub Copilot Modernisierung

GitHub Copilot Modernisierung ist ein KI-basierter Agent, der .NET Projekte auf neuere Versionen aktualisiert und Anwendungen zu Azure migriert. Dieser Artikel führt Sie durch das Upgrade Ihrer .NET-Anwendungen mit einem strukturierten dreistufigen Workflow: Bewertung, Planung und Ausführung.

Der Modernisierungs-Agent analysiert Ihre Projekte und Abhängigkeiten, erstellt detaillierte Upgradedokumentationen in jeder Phase und hilft bei Codefixes während des gesamten Prozesses. Der Agent unterstützt das Upgrade von älteren .NET-Versionen auf die neueste Version, einschließlich Migrationen von .NET Framework auf moderne .NET.

Voraussetzungen

Richten Sie die Modernisierungsfunktion von GitHub Copilot in Ihrer Entwicklungsumgebung ein, bevor Sie mit einem Upgrade beginnen. Installationsschritte finden Sie unter Installieren GitHub Copilot Modernisierung.

Starten des Upgrades

Um ein Upgrade zu starten, verwenden Sie den Agent modernize-dotnet in Copilot:

  1. Öffnen Sie Ihr .NET Projekt oder Ihre Lösung in Ihrer Entwicklungsumgebung.

  2. Starten Sie den Agent mit einer der folgenden Methoden:

    • Visual Studio: Klicken Sie mit der rechten Maustaste auf die Lösung oder das Projekt im Projektmappen-Explorer und wählen Sie Modernize aus. Oder öffnen Sie das Fenster GitHub Copilot Chat, und geben Sie @Modernize ein.
    • Visual Studio Code: Öffnen Sie den Bereich GitHub Copilot Chat, und geben Sie @modernize-dotnet ein.
    • GitHub Copilot CLI: Geben Sie @modernize-dotnet gefolgt von Ihrer Upgrade- oder Migrationsanforderung ein.
    • GitHub.com: Verwenden Sie den Codierungs-Agent modernize-dotnet in Ihrem Repository.
  3. Informieren Sie den Agent, was aktualisiert oder migriert werden soll.

Wenn Sie das Upgrade starten, sammelt Copilot Vorabinitialisierungsinformationen: die Zielframeworkversion, die Git-Verzweigungsstrategie und den Workflowmodus (automatisch oder von Ihnen geführt). Copilot bewertet dann Ihr Projekt und führt einen dreistufigen Workflow aus, indem es für jede Stufe Markdown-Dateien unter .github/upgrades/{scenarioId} in Ihrem Repository schreibt. Der {scenarioId} Wert ist ein eindeutiger Bezeichner für den Upgrade-Typ, z. B. dotnet-version-upgrade. Wenn .github/upgrades/{scenarioId} bereits aus einem vorherigen Versuch vorhanden ist, fragt Copilot, ob der Vorgang fortgesetzt oder neu gestartet werden soll.

Die drei Phasen sind:

  • Bewertungsphase. Copilot untersucht Ihr Projekt, präsentiert Strategieentscheidungen für Ihre Überprüfung und speichert bestätigte Entscheidungen. Passen Sie die Bewertung an, bevor Sie fortfahren.
  • Planungsphase. Copilot erstellt eine detaillierte Spezifikation mit den Schritten zum Erreichen des Zielupgrades.
  • Ausführungsphase. Copilot zerlegt den Plan in sequenzielle Aufgaben und führt das Upgrade aus.

Überprüfen der Bewertung

Die Bewertung untersucht Ihre Projektstruktur, Abhängigkeiten und Codemuster, um zu ermitteln, was geändert werden muss. Copilot startet die Bewertung automatisch und generiert eine datei assessment.md in .github/upgrades/{scenarioId}.

In der Bewertung werden Breaking Changes, API-Kompatibilitätsprobleme, veraltete Muster und der Upgrade-Umfang aufgelistet. Das folgende Beispiel zeigt einen Teil einer Bewertung für ein ASP.NET Core Projekt, das von .NET 6.0 auf .NET 10.0 aktualisiert wird:

# 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)

...

So überprüfen und anpassen Sie die Bewertung:

  1. Öffnen Sie die assessment.md Datei in .github/upgrades/{scenarioId}.
  2. ** Überprüfen Sie die erkannten kompatibilitätsbrechenden Änderungen und Kompatibilitätsprobleme.
  3. Fügen Sie dem Dokument projektspezifische Kontext oder Bedenken hinzu.
  4. Sag Copilot zum Planungsstadium überzugehen.

Überprüfen von Upgradeoptionen

Nach der Bewertung analysiert Copilot Ihre Lösung und präsentiert Entscheidungen zur Upgrade-Strategie zur Überprüfung durch Sie. Der Agent empfiehlt einen Ansatz basierend auf der Struktur Ihres Projekts und speichert bestätigte Entscheidungen in upgrade-options.md in .github/upgrades/{scenarioId}.

Zu den Optionen gehören in der Regel:

  • Upgrade-Strategie. Bottom-up (detaillierte Projekte zuerst), top-down (zuerst die Anwendung) oder auf einmal (alle Projekte in einem Durchlauf).
  • Projektmigrationsansatz Vor-Ort-Umschreibung oder parallele Migration.
  • Technologiemodernisierung. Gibt an, ob Technologien wie Entity Framework (EF6 auf EF Core), Abhängigkeitseinfügung, Protokollierung und Konfiguration aktualisiert werden sollen.
  • Paketverwaltung. Gibt an, ob die zentrale Paketverwaltung verwendet werden soll.
  • Kompatibilitätsbehandlung. So behandeln Sie nicht unterstützte APIs, inkompatible Pakete und plattformspezifische Funktionen.

Überprüfen Sie die vorgeschlagenen Optionen, und bestätigen oder überschreiben Sie sie. Sag dem Copilot, zum Planungsstadium fortzufahren.

Beginnen Sie mit der Planung und überprüfen Sie den Plan.

In der Planungsphase werden die Bewertung und Ihre bestätigten Upgradeoptionen in eine detaillierte Spezifikation konvertiert, in der erläutert wird, wie sie jedes Problem beheben können. Wenn Sie Copilot anweisen, mit der Planung fortzufahren, wird eine Datei in plan.md.github/upgrades/{scenarioId} generiert. Der Agent erstellt außerdem eine scenario-instructions.md Datei, die Einstellungen, Entscheidungen und benutzerdefinierte Anweisungen für das Upgrade speichert.

Der Plan dokumentiert Upgradestrategien, Umgestaltungsansätze, Abhängigkeitsupgradepfade und Risikominderungen. Das folgende Beispiel zeigt einen Teil eines Plans für ein ASP.NET Core Projekt:

# .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)

...

So überprüfen und anpassen Sie den Plan:

  1. Öffnen Sie die plan.md Datei in .github/upgrades/{scenarioId}.

  2. Überprüfen Sie die Upgradestrategien und Abhängigkeitsupdates.

  3. Bearbeiten Sie den Plan, um Upgradeschritte anzupassen oder bei Bedarf Kontext hinzuzufügen.

    Vorsicht

    Der Plan hängt von projektübergreifenden Abhängigkeiten ab. Das Upgrade ist nicht erfolgreich, wenn Sie den Plan auf eine Weise ändern, die verhindert, dass der Migrationspfad abgeschlossen wird. Wenn z. B. Project A von Project B abhängt und Sie Project B aus dem Upgradeplan entfernen, schlägt das Upgrade Project A fehl.

  4. Sagen Sie Copilot, er soll zur Ausführungsphase übergehen.

Starten der Ausführung und Ausführen des Upgrades

In der Ausführungsphase wird der Plan in sequenzielle, konkrete Aufgaben mit Überprüfungskriterien unterteilt. Wenn Sie Copilot anweisen, mit der Ausführung fortzufahren, generiert sie eine tasks.md-Datei in .github/upgrades/{scenarioId}.

Die Aufgabenliste beschreibt jede Aufgabe und wie Copilot den Erfolg überprüft. Das folgende Beispiel zeigt eine Aufgabenliste für eine Lösung mit ASP.NET Core und WPF Projekten:

# 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"

So führen Sie das Upgrade aus:

  1. Sagen Sie Copilot, das Upgrade zu starten.
  2. Überwachen Sie den Fortschritt, indem Sie die Datei tasks.md überprüfen, während Copilot Aufgabenstatus aktualisiert.
  3. Wenn bei Copilot ein Problem auftritt, das nicht behoben werden kann, stellen Sie die angeforderte Hilfe bereit.
  4. Basierend auf Ihren Entscheidungen und Änderungen passt Copilot ihre Strategie an die verbleibenden Aufgaben an und setzt das Upgrade fort.

Copilot übernimmt Änderungen entsprechend der von Ihnen während des Initialisierungsprozesses angepassten Git-Strategie: pro Aufgabe, pro Gruppe von Aufgaben oder am Ende.

Überprüfen Sie die Aktualisierung

Wenn das Upgrade abgeschlossen ist, zeigt Copilot die empfohlenen nächsten Schritte in der Chatantwort an. Überprüfen Sie die tasks.md Datei .github/upgrades/{scenarioId} auf den Status jedes Schritts.

Das folgende Beispiel zeigt abgeschlossene Aufgaben für ein ASP.NET Core Projektupgrade:

# 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**)

...

So überprüfen Sie das Upgrade:

  1. Überprüfen Sie den endgültigen Vorgangsstatus in tasks.md.
  2. Beheben Sie fehlerhafte Tests oder Kompilierungsfehler.
  3. Stellen Sie sicher, dass alle aktualisierten NuGet-Pakete mit Ihrer Anwendung kompatibel sind.
  4. Testen Sie Ihre Anwendung sorgfältig, um zu überprüfen, ob das Upgrade erfolgreich war.
  5. Wenden Sie neue Features und Verbesserungen an, die in der aktualisierten .NET-Version verfügbar sind.