다음을 통해 공유


GitHub Copilot 앱 현대화를 사용하여 .NET 앱 업그레이드

GitHub Copilot 앱 현대화는 .NET 프로젝트를 최신 버전으로 업그레이드하고 애플리케이션을 Azure로 마이그레이션하는 Visual Studio의 AI 기반 에이전트입니다. 이 문서에서는 구조적 3단계 워크플로인 평가, 계획 및 실행을 사용하여 .NET 애플리케이션을 업그레이드하는 방법에 대해 설명합니다.

현대화 에이전트는 프로젝트 및 종속성을 분석하고, 각 단계에서 자세한 업그레이드 설명서를 만들고, 프로세스 전체에서 코드 수정을 지원합니다. .NET Framework에서 최신 .NET으로의 마이그레이션을 포함하여 이전 .NET 버전에서 최신 버전으로 업그레이드할 수 있습니다.

필수 조건

시작하기 전에 다음 요구 사항이 있는지 확인합니다.

업그레이드 시작

업그레이드를 시작하려면 GitHub Copilot 채팅과 상호 작용하여 현대화 에이전트를 시작합니다.

  1. Visual Studio에서 .NET 프로젝트 또는 솔루션을 엽니다.

  2. 다음 방법 중 하나를 사용하여 GitHub Copilot 앱 현대화 에이전트에 액세스합니다.

    솔루션 탐색기에서 솔루션 또는 프로젝트를 마우스 오른쪽 단추로 클릭하고 현대화를 선택합니다.

    -또는—

    GitHub Copilot 채팅 창을 열고 업그레이드 또는 마이그레이션 요청을 @modernize 뒤에 입력하세요.

  3. 에이전트에 @modernize 업그레이드 또는 마이그레이션할 내용을 알릴 수 있습니다.

업그레이드를 시작하면 Git 리포지토리에서 작업하는 경우 Copilot에서 새 분기를 만들라는 메시지가 표시됩니다. 그런 다음, 코필로트는 3단계 워크플로를 실행하여 리포지토리의 .github/upgrades 각 단계에 대한 Markdown 파일을 작성합니다. 이전 시도에서 이미 존재하는 경우 .github/upgrades , 코필로트는 계속하거나 새로 시작할지 여부를 묻습니다.

세 단계는 다음과 같습니다.

  • 평가 단계 - Copilot는 프로젝트를 검사하여 호환성이 손상되는 변경, 호환성 문제 및 업그레이드 요구 사항을 식별합니다.
  • 계획 단계 - Copilot는 모든 문제를 해결하는 방법을 설명하는 자세한 사양을 만듭니다.
  • 실행 단계 - Copilot는 계획을 순차 작업으로 분리하고 업그레이드를 수행합니다.

평가 시작 및 결과 검토

평가 단계에서는 프로젝트 구조, 종속성 및 코드 패턴을 검사하여 변경해야 하는 사항을 식별합니다. Copilot는 자동으로 이 단계를 시작하고 파일을 생성하여 assessment.md.github/upgrades에 저장합니다.

평가에는 호환성이 손상되는 변경, API 호환성 문제, 사용되지 않는 패턴 및 업그레이드 범위가 나열되어 있으므로 주의가 필요한 사항을 정확하게 알 수 있습니다. 다음 예제에서는 .NET 6.0에서 .NET 9.0으로 업그레이드하는 ASP.NET Core 프로젝트에 대한 평가의 일부를 보여 줍니다.

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

...

계획을 검토하고 사용자 지정하려면 다음을 수행합니다.

  1. assessment.md 파일을 .github/upgrades에서 엽니다.
  2. 식별된 파괴적 변경과 호환성 문제를 검토합니다.
  3. 프로젝트에 관련된 컨텍스트 또는 문제를 문서에 추가합니다.
  4. 코필로트에게 계획 단계로 이동하라고 지시합니다.

계획 시작 및 계획 검토

계획 단계에서는 평가를 모든 문제를 해결하는 방법을 설명하는 자세한 사양으로 변환합니다. 계획을 계속 진행하라고 Copilot에 지시하면 파일을 생성합니다 plan.md.github/upgrades.

이 계획은 업그레이드 전략, 리팩터링 방법, 종속성 업그레이드 경로 및 위험 완화를 문서화합니다. 다음 예제에서는 ASP.NET Core 프로젝트에 대한 계획의 일부를 보여줍니다.

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

...

계획을 검토하고 사용자 지정하려면 다음을 수행합니다.

  1. .github/upgrades에서 plan.md 파일을 엽니다.

  2. 업그레이드 전략 및 종속성 업데이트를 검토합니다.

  3. 업그레이드 단계를 조정하거나 필요한 경우 컨텍스트를 추가하도록 계획을 편집합니다.

    주의

    이 계획은 프로젝트 상호 종속성을 기반으로 합니다. 마이그레이션 경로를 완료할 수 없는 방식으로 계획을 수정하면 업그레이드가 성공하지 못합니다. 예를 들어 Project AProject B에 의존하고 있을 때, 업그레이드 계획에서 Project B를 제거하면 Project A의 업그레이드가 실패할 수 있습니다.

  4. 코필로트에게 실행 단계로 이동하라고 지시합니다.

실행 시작 및 업그레이드 실행

실행 단계에서는 유효성 검사 조건을 사용하여 계획을 순차적인 구체적인 작업으로 나눕니다. 코필로트에게 실행을 계속하라고 지시하면 .에 tasks.md파일이 생성됩니다.github/upgrades.

작업 목록은 각 작업을 설명하고, Copilot가 성공 여부를 확인하는 방법을 설명합니다. 다음 예제에서는 ASP.NET Core 및 WPF 프로젝트를 포함하는 솔루션에 대한 작업 목록을 보여 있습니다.

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

업그레이드를 실행하려면 다음을 수행합니다.

  1. 부조종사에게 업그레이드를 시작하라고 지시합니다.
  2. Copilot가 작업 상태를 업데이트할 때 tasks.md 파일을 검토하여 진행 상황을 모니터링합니다.
  3. 코필로트가 해결할 수 없는 문제가 발생하면 요청된 도움말을 제공합니다.
  4. Copilot가 사용자의 개입을 통해 학습하고 업그레이드를 계속하도록 합니다.

이 도구는 프로세스의 모든 부분에 대해 Git 커밋을 만들므로 변경 내용을 쉽게 롤백하거나 변경 내용에 대한 자세한 정보를 가져올 수 있습니다.

업그레이드 확인

업그레이드가 완료되면 Copilot는 채팅 응답의 다음 단계를 표시하여 프로세스 후 수행할 작업을 안내합니다. 파일을 검토하여 tasks.md 모든 단계의 상태를 확인합니다. 이 도구는 업그레이드 프로세스의 모든 부분에 대해 Git 커밋을 만들므로 변경 내용을 쉽게 롤백하거나 변경 내용에 대한 자세한 정보를 가져올 수 있습니다.

다음 예제에서는 ASP.NET Core 프로젝트 업그레이드에 대한 완료된 작업을 보여 줍니다.

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

...

업그레이드를 확인하려면 다음을 수행합니다.

  1. 에서 최종 작업 상태를 검토합니다 tasks.md.
  2. 실패한 테스트 또는 컴파일 오류를 해결합니다.
  3. 업데이트된 모든 NuGet 패키지가 애플리케이션과 호환되는지 확인합니다.
  4. 애플리케이션을 철저히 테스트하여 업그레이드가 성공했는지 확인합니다.
  5. 업그레이드된 .NET 버전에서 사용할 수 있는 새로운 기능 및 향상된 기능을 적용합니다.