GitHub Copilot 현대화는 .NET 프로젝트를 최신 버전으로 업그레이드하고 애플리케이션을 Azure 마이그레이션하는 AI 기반 에이전트입니다. 이 문서에서는 평가, 계획 및 실행의 구조화된 3단계 워크플로를 사용하여 .NET 애플리케이션을 업그레이드하는 방법에 대해 설명합니다.
현대화 에이전트는 프로젝트 및 종속성을 분석하고, 각 단계에서 자세한 업그레이드 설명서를 만들고, 프로세스 전체에서 코드 수정을 지원합니다. 에이전트는 .NET Framework에서 최신 .NET 업그레이드를 포함하여 이전 .NET 버전에서 최신 버전으로 업그레이드를 지원합니다.
필수 조건
업그레이드를 시작하기 전에 개발 환경에서 GitHub Copilot 현대화를 설정합니다. 설치 단계는 GitHub Copilot 현대화 설정을 참조하세요.
업그레이드 시작
업그레이드를 시작하려면 Copilot modernize-dotnet 에이전트를 사용합니다.
개발 환경에서 .NET 프로젝트 또는 솔루션을 엽니다.
다음 방법 중 하나를 사용하여 에이전트를 시작합니다.
-
Visual Studio: 솔루션 탐색기 솔루션 또는 프로젝트를 마우스 오른쪽 단추로 클릭하고 Modernize 선택합니다. 또는 GitHub Copilot Chat 창을 열고
@Modernize입력합니다. -
Visual Studio Code: GitHub Copilot Chat 패널을 열고
@modernize-dotnet입력합니다. -
GitHub Copilot CLI: 업그레이드 또는 마이그레이션 요청 뒤에
@modernize-dotnet입력합니다. -
GitHub.com: 리포지토리에서
modernize-dotnet코딩 에이전트를 사용합니다.
-
Visual Studio: 솔루션 탐색기 솔루션 또는 프로젝트를 마우스 오른쪽 단추로 클릭하고 Modernize 선택합니다. 또는 GitHub Copilot Chat 창을 열고
에이전트에 업그레이드 또는 마이그레이션할 내용을 알릴 수 있습니다.
업그레이드를 시작하면 Copilot 대상 프레임워크 버전, Git 분기 전략 및 워크플로 모드(자동으로 또는 사용자가 안내함)와 같은 사전 초기화 정보를 수집합니다. 그런 다음 Copilot 프로젝트를 평가하고 3단계 워크플로를 실행하여 리포지토리의 .github/upgrades/{scenarioId} 아래 각 단계에 대한 Markdown 파일을 작성합니다. 값은 {scenarioId} 업그레이드 유형에 대한 고유 식별자입니다(예: dotnet-version-upgrade.). 이전 시도에서 .github/upgrades/{scenarioId} 이미 있는 경우 Copilot 계속하거나 새로 시작할지 묻습니다.
세 단계는 다음과 같습니다.
- 평가 단계입니다. Copilot 프로젝트를 검사하고, 검토에 대한 전략 결정을 제시하고, 확인된 결정을 저장합니다. 계속하기 전에 평가를 사용자 지정합니다.
- 계획 단계. Copilot 대상 업그레이드에 도달하는 단계를 사용하여 자세한 사양을 만듭니다.
- 실행 단계입니다. Copilot 계획을 순차 작업으로 분리하고 업그레이드를 수행합니다.
평가를 검토하기
평가는 프로젝트 구조, 종속성 및 코드 패턴을 검사하여 변경해야 하는 사항을 식별합니다. Copilot 자동으로 평가를 시작하고 assessment.md.github/upgrades/{scenarioId} 파일을 생성합니다.
평가에는 호환성이 손상되는 변경, API 호환성 문제, 사용되지 않는 패턴 및 업그레이드 범위가 나열됩니다. 다음 예제에서는 .NET 6.0에서 .NET 10.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)
...
평가를 검토하고 사용자 지정하려면 다음을 수행합니다.
-
assessment.md파일을.github/upgrades/{scenarioId}에서 엽니다. - 식별된 파괴적 변경과 호환성 문제를 검토합니다.
- 문서에 프로젝트별 컨텍스트 또는 문제를 추가합니다.
- Copilot에게 계획 단계로 진행하라고 지시합니다.
업그레이드 옵션 검토
평가 후 Copilot 솔루션을 평가하고 검토를 위한 업그레이드 전략 결정을 제시합니다. 에이전트는 프로젝트의 구조에 따라 접근 방법을 권장하고, 확인된 결정을 upgrade-options.md에 .github/upgrades/{scenarioId}에 저장합니다.
옵션에는 일반적으로 다음이 포함됩니다.
- 업그레이드 전략. 상향식(리프 프로젝트 먼저), 하향식(애플리케이션 우선) 또는 일괄 처리(모든 프로젝트를 한 번에).
- 프로젝트 업그레이드 접근 방법. 현재 위치 재설정 또는 동시 업그레이드.
- 기술 현대화. Entity Framework(EF6에서 EF Core로), 종속성 주입, 로깅 및 구성과 같은 기술을 업그레이드할지 여부입니다.
- 패키지 관리. 중앙 패키지 관리를 채택할지 여부입니다.
- 호환성 처리. 지원되지 않는 API, 호환되지 않는 패키지 및 플랫폼별 기능을 해결하는 방법입니다.
제안된 옵션을 검토하고 확인하거나 무시합니다. Copilot에게 계획 단계로 진행하라고 지시합니다.
계획 시작 및 계획 검토
계획 단계에서는 평가 및 확인된 업그레이드 옵션을 모든 문제를 해결하는 방법을 설명하는 자세한 사양으로 변환합니다. Copilot 계획을 진행하라고 지시하면 plan.md.github/upgrades/{scenarioId} 파일이 생성됩니다. 또한 에이전트는 업그레이드에 scenario-instructions.md 대한 기본 설정, 결정 및 사용자 지정 지침을 저장하는 파일을 만듭니다.
이 계획은 업그레이드 전략, 리팩터링 방법, 종속성 업그레이드 경로 및 위험 완화를 문서화합니다. 다음 예제에서는 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)
...
계획을 검토하고 사용자 지정하려면 다음을 수행합니다.
plan.md파일을.github/upgrades/{scenarioId}에서 엽니다.업그레이드 전략 및 종속성 업데이트를 검토합니다.
필요에 따라 업그레이드 단계를 조정하거나 컨텍스트를 추가하도록 계획을 편집합니다.
주의
이 계획은 프로젝트 상호 종속성에 따라 달라집니다. 업그레이드 경로가 완료되지 않도록 하는 방식으로 계획을 수정하면 업그레이드가 성공하지 못합니다. 예를 들어, Project A가 Project B에 의존하는 경우, 업그레이드 계획에서 Project B를 제거하면 Project A의 업그레이드가 실패할 수 있습니다.
Copilot에 실행 단계로 이동하라고 지시합니다.
실행 시작 및 업그레이드 실행
실행 단계에서는 유효성 검사 조건을 사용하여 계획을 순차적인 구체적인 작업으로 나눕니다. 실행을 계속하도록 Copilot 지시하면 tasks.md.github/upgrades/{scenarioId} 파일이 생성됩니다.
작업 목록에서는 각 작업과 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%) 
---
## 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"
업그레이드를 실행하려면 다음을 수행합니다.
- Copilot에게 업그레이드를 시작하도록 지시합니다.
- Copilot 작업 상태를 업데이트할 때
tasks.md파일을 검토하여 진행률을 모니터링합니다. - Copilot 해결할 수 없는 문제가 발생하면 요청된 도움말을 제공합니다.
- 결정 및 변경 사항에 따라 Copilot 전략을 나머지 작업에 맞게 조정하고 업그레이드를 계속합니다.
Copilot 사전 초기화 중에 구성한 Git 전략(작업당, 작업 그룹별 또는 끝)에 따라 변경 내용을 커밋합니다.
업그레이드 확인
업그레이드가 완료되면 Copilot 채팅 응답에서 권장되는 다음 단계를 표시합니다.
tasks.md에서 .github/upgrades/{scenarioId} 파일을 검토하여 모든 단계의 상태를 확인합니다.
다음 예제에서는 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%) 
---
## 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**)
...
업그레이드를 확인하려면 다음을 수행합니다.
- 에서 최종 작업 상태를 검토합니다
tasks.md. - 실패한 테스트 또는 컴파일 오류를 해결합니다.
- 업데이트된 모든 NuGet 패키지가 애플리케이션과 호환되는지 확인합니다.
- 애플리케이션을 철저히 테스트하여 업그레이드가 성공했는지 확인합니다.
- 업그레이드된 .NET 버전에서 사용할 수 있는 새로운 기능과 향상된 기능을 적용합니다.
관련 콘텐츠
.NET