Freigeben über


Aktualisieren einer .NET-App mit GitHub Copilot-App-Modernisierung

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

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

Voraussetzungen

Bevor Sie beginnen, stellen Sie sicher, dass Sie über die folgenden Anforderungen verfügen:

Starten des Upgrades

Um ein Upgrade zu starten, interagieren Sie mit GitHub Copilot-Chat, um den Modernisierungs-Agent zu initiieren:

  1. Öffnen Sie Ihr .NET-Projekt oder Ihre .NET-Projektmappe in Visual Studio.

  2. Greifen Sie mit einer der folgenden Methoden auf den Modernisierungs-Agent der GitHub Copilot-App zu:

    Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Projektmappe oder das Projekt, und wählen Sie "Modernisieren" aus.

    – oder –

    Öffnen Sie das GitHub Copilot Chat-Fenster und geben Sie Ihre Upgrade- oder Migrationsanforderung gefolgt von @modernize ein.

  3. Teilen Sie dem @modernize Agent mit, was Sie aktualisieren oder migrieren möchten.

Wenn Sie das Upgrade starten, fordert Copilot Sie auf, eine neue Verzweigung zu erstellen, wenn Sie in einem Git-Repository arbeiten. Copilot führt dann einen dreistufigen Workflow aus, indem er für jede Stufe eine Markdown-Datei unter .github/upgrades in Ihrem Repository schreibt. Wenn .github/upgrades bereits von einem vorherigen Versuch existiert, fragt Copilot, ob der Vorgang fortgesetzt oder neu gestartet werden soll.

Die drei Phasen sind:

  • Bewertungsphase – Copilot untersucht Ihr Projekt, um einschneidende Änderungen, Kompatibilitätsprobleme und Upgradeanforderungen zu identifizieren.
  • Planungsphase – Copilot erstellt eine detaillierte Spezifikation, in der erläutert wird, wie jedes Problem behoben werden kann.
  • Ausführungsphase – Copilot unterbricht den Plan in sequenzielle Aufgaben und führt das Upgrade aus.

Start der Bewertung und der Überprüfung der Ergebnisse

In der Bewertungsphase werden Ihre Projektstruktur, Abhängigkeiten und Codemuster untersucht, um zu ermitteln, was geändert werden muss. Copilot startet diese Phase automatisch und generiert eine assessment.md Datei in .github/upgrades.

Die Bewertung listet wichtige Änderungen, API-Kompatibilitätsprobleme, veraltete Muster und den Upgradebereich auf, damit Sie genau wissen, was Aufmerksamkeit erfordert. Das folgende Beispiel zeigt einen Teil einer Bewertung für ein ASP.NET Core-Projekt, das von .NET 6.0 auf .NET 9.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 den Plan:

  1. Öffnen Sie die assessment.md Datei in .github/upgrades.
  2. ** Überprüfen Sie die erkannten kompatibilitätsbrechenden Änderungen und Kompatibilitätsprobleme.
  3. Fügen Sie dem Dokument projektspezifische Kontexte oder Bedenken hinzu.
  4. Teilen Sie Copilot mit, zur Planungsphase zu wechseln.

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

In der Planungsphase wird die Bewertung in eine detaillierte Spezifikation umgewandelt, in der erläutert wird, wie jedes Problem behoben werden kann. Wenn Sie Copilot anweisen, mit der Planung fortzufahren, wird eine plan.md-Datei in .github/upgrades generiert.

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.

  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 basiert auf Projektbeziehungen. Das Upgrade ist nicht erfolgreich, wenn Sie den Plan so ändern, dass der Migrationspfad nicht abgeschlossen werden kann. Wenn Project A beispielsweise von Project B abhängt und Sie Project B aus dem Upgradeplan entfernen, schlägt das Upgrade von Project A möglicherweise fehl.

  4. Teilen Sie Copilot mit, zur Ausführungsphase zu wechseln.

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, wird in .github/upgrades eine tasks.md-Datei erstellt.

In der Aufgabenliste werden die einzelnen Aufgaben beschrieben und erläutert, wie Copilot bestätigt, dass sie erfolgreich war. Das folgende Beispiel zeigt die Aufgabenliste für eine Lösung, die ASP.NET Core- und WPF-Projekte enthält:

# 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 tasks.md Datei überprüfen, während Copilot Aufgabenstatus aktualisiert.
  3. Wenn Copilot auf ein Problem stößt, das es nicht lösen kann, sollen Sie die angeforderte Hilfe bereitstellen.
  4. Lassen Sie Copilot von Ihren Interventionen lernen und das Upgrade fortsetzen.

Das Tool erstellt einen Git-Commit für jeden Teil des Prozesses, sodass Sie ganz einfach Änderungen zurücksetzen oder detaillierte Informationen dazu erhalten können, was geändert wurde.

Überprüfen Sie die Aktualisierung

Wenn das Upgrade abgeschlossen ist, zeigt Copilot die nächsten Schritte in der Chatantwort an, um Sie darüber zu informieren, was nach dem Vorgang zu tun ist. Überprüfen Sie die tasks.md Datei für den Status jedes Schritts. Das Tool erstellt einen Git-Commit für jeden Teil des Upgradeprozesses, sodass Sie ganz einfach Änderungen zurücksetzen oder detaillierte Informationen dazu erhalten können, was geändert wurde.

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.