Megosztás:


.NET-alkalmazás frissítése a GitHub Copilot-alkalmazás modernizálásával

A GitHub Copilot-alkalmazások modernizálása egy AI-alapú ügynök a Visual Studióban, amely a .NET-projekteket újabb verziókra frissíti, és alkalmazásokat migrál az Azure-ba. Ez a cikk végigvezeti a .NET-alkalmazások egy strukturált, háromfázisú munkafolyamaton keresztül történő frissítésén: értékelés, tervezés és végrehajtás.

A modernizálási ügynök elemzi a projekteket és a függőségeket, részletes frissítési dokumentációt hoz létre minden szakaszban, és segít a kódjavításokban a folyamat során. Támogatja a régebbi .NET-verziókról a legújabb verzióra való frissítést, beleértve a .NET-keretrendszerből a modern .NET-re való migrálást is.

Előfeltételek

Mielőtt hozzákezdene, győződjön meg arról, hogy a következő követelményekkel rendelkezik:

A frissítés kezdeményezése

Frissítés indításához lépjen kapcsolatba a GitHub Copilot-csevegéssel a modernizálási ügynök elindításához:

  1. Nyissa meg a .NET-projektet vagy -megoldást a Visual Studióban.

  2. Az alábbi módszerek egyikével érheti el a GitHub Copilot alkalmazáskorszerűsítési ügynökét:

    Kattintson a jobb gombbal a megoldásra vagy projektre a Megoldáskezelőben , és válassza a Modernizálás lehetőséget.

    — vagy —

    Nyissa meg a GitHub Copilot Csevegőablakot , és írja be @modernize a frissítési vagy migrálási kérést.

  3. Mondja el az @modernize ügynöknek, hogy mit szeretne frissíteni vagy migrálni.

A frissítés indításakor a Copilot megkéri, hogy hozzon létre egy új ágat, ha egy Git-adattárban dolgozik. A Copilot ezután futtat egy háromfázisú munkafolyamatot, amelyben egy Markdown-fájlt ír az adattár minden egyes szakaszához .github/upgrades . Ha .github/upgrades már létezik egy korábbi kísérletből, a Copilot megkérdezi, hogy folytatja-e a műveletet, vagy kezdjen-e újra.

A három szakasz a következő:

  • Értékelési szakasz – A Copilot megvizsgálja a projektet a kompatibilitástörő változások, a kompatibilitási problémák és a frissítési követelmények azonosítása érdekében.
  • Tervezési szakasz – A Copilot részletes specifikációt hoz létre, amely ismerteti, hogyan oldható meg minden probléma.
  • Végrehajtási szakasz – A Copilot szekvenciális feladatokra bontja a tervet, és végrehajtja a frissítést.

Az értékelés megkezdése és az eredmények áttekintése

Az értékelési szakasz megvizsgálja a projektstruktúrát, a függőségeket és a kódmintákat, hogy megállapítsa, mit kell módosítania. A Copilot automatikusan elindítja ezt a szakaszt, és létrehoz egy assessment.md fájlt a .github/upgrades helyen.

Az értékelés felsorolja a kompatibilitástörő változásokat, az API-kompatibilitási problémákat, az elavult mintákat és a frissítési hatókört, hogy pontosan tudja, mire van szüksége. Az alábbi példa egy ASP.NET Core-projekt .NET 6.0-ról .NET 9.0-ra való frissítésének egy részét mutatja be:

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

...

A terv áttekintése és testreszabása:

  1. Nyissa meg a assessment.md fájlt .github/upgrades.
  2. Tekintse át az észlelt megszakító változásokat és kompatibilitási problémákat.
  3. Adjon hozzá projektspecifikus kontextust vagy aggályokat a dokumentumhoz.
  4. Mondja meg a Copilotnak, hogy lépjen a tervezési fázisba.

A tervezés megkezdése és a terv áttekintése

A tervezési szakasz az értékelést egy részletes specifikációvá alakítja, amely elmagyarázza, hogyan oldható meg minden probléma. Amikor azt mondja a Copilotnak, hogy folytassa a tervezést, létrehoz egy plan.md fájlt a következőben .github/upgrades: .

A terv a frissítési stratégiákat, a megközelítések újrabontását, a függőségek frissítési útvonalait és a kockázatcsökkentéseket dokumentálja. Az alábbi példa egy ASP.NET Core-projekt tervének egy részét mutatja be:

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

...

A terv áttekintése és testreszabása:

  1. Nyissa meg a plan.md fájlt a(z) .github/upgrades.

  2. Tekintse át a frissítési stratégiákat és a függőségi frissítéseket.

  3. Szerkessze a tervet a frissítési lépések módosításához, vagy szükség esetén adjon hozzá kontextust.

    Caution

    A terv a projektköziségeken alapul. A frissítés nem fog sikerülni, ha úgy módosítja a tervet, hogy az áttelepítési útvonal ne fejeződjön be. Ha például az A projekt a B projekttől függ, és eltávolítja a B projektet a frissítési tervből, előfordulhat, hogy az A projekt frissítése sikertelen lesz.

  4. Kérje meg a Copilot, hogy lépjen a végrehajtási szakaszba.

Indítsa el a végrehajtást, és futtassa a frissítést

A végrehajtási szakasz szekvenciális, konkrét tevékenységekre bontja a tervet érvényesítési feltételekkel. Amikor azt mondja a Copilotnak, hogy folytassa a végrehajtást, az létrehoz egy tasks.md fájlt a következőben .github/upgrades: .

A feladatlista ismerteti az egyes feladatokat, és ismerteti, hogyan erősíti meg a Copilot a sikerességét. Az alábbi példa egy ASP.NET Core- és WPF-projekteket tartalmazó megoldás feladatlistáját mutatja be:

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

A frissítés futtatása:

  1. Kérje meg a Copilotot, hogy indítsa el a frissítést.
  2. Figyelje meg az előrehaladást a fájl áttekintésével, mivel a Copilot frissíti a tasks.md feladat állapotát.
  3. Ha a Copilot olyan problémába ütközik, amely nem oldható meg, adja meg a kért segítséget.
  4. A Copilot tanuljon a beavatkozásaiból, és folytassa a frissítést.

Az eszköz létrehoz egy Git-véglegesítést a folyamat minden részéhez, így könnyedén visszaállíthatja a módosításokat, vagy részletes információkat kaphat arról, hogy mi változott.

A frissítés ellenőrzése

Amikor a frissítés befejeződik, a Copilot a csevegési válasz következő lépéseit mutatja be, hogy útmutatást nyújtsunk a folyamat utáni teendőkről. Tekintse át a tasks.md fájlt minden lépés állapotának megtekintéséhez. Az eszköz létrehoz egy Git-véglegesítést a frissítési folyamat minden részéhez, így könnyedén visszaállíthatja a módosításokat, vagy részletes információkat kaphat arról, hogy mi változott.

Az alábbi példa egy ASP.NET Core-projektfrissítés befejezett tevékenységeit mutatja be:

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

...

A frissítés ellenőrzése:

  1. Tekintse át a végleges feladat állapotát a következőben: .tasks.md
  2. A sikertelen tesztek vagy fordítási hibák elhárítása.
  3. Győződjön meg arról, hogy az összes frissített NuGet-csomag kompatibilis az alkalmazással.
  4. A frissítés sikerességének ellenőrzéséhez alaposan tesztelje az alkalmazást.
  5. Alkalmazza a frissített .NET-verzióban elérhető új funkciókat és fejlesztéseket.