다음을 통해 공유


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

GitHub Copilot 앱 현대화는 .NET 프로젝트를 최신 버전으로 업그레이드하고 애플리케이션을 Azure로 마이그레이션하는 데 도움이 되는 Visual Studio의 AI 기반 에이전트입니다. 이 문서에서는 이 도구를 사용하여 초기 평가에서 최종 유효성 검사에 이르기까지 .NET 애플리케이션을 현대화하는 프로세스를 안내합니다.

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

필수 조건

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

  • Windows 운영 체제

  • Visual Studio 2026 (또는 Visual Studio 2022 버전 17.14.17 이상).

  • 다음 선택적 구성 요소가 사용하도록 설정된 .NET 데스크톱 개발 워크로드:

    • GitHub Copilot
    • .NET용 GitHub Copilot 앱 현대화
  • 부조종사 라이선스 및 지원되는 구독 플랜:

    Copilot 액세스있는 GitHub 계정 사용하여 Visual Studio에 로그인합니다.

    지원되는 구독 계획:

    • 부조종사 프로
    • Copilot Pro(프로)+
    • 코파일럿 사업
    • Copilot Enterprise

    중요합니다

    구독을 변경하는 경우 Visual Studio를 다시 시작해야 합니다.

  • 코드는 C#으로 작성해야 합니다.

업그레이드 프로세스 시작

업그레이드의 첫 번째 단계는 GitHub Copilot와 상호 작용하여 계획을 생성하는 것입니다. 다음 단계에 따라 업그레이드를 시작합니다.

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

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

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

    -또는—

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

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

업그레이드 계획 생성

프로세스가 시작되면 Copilot는 프로젝트 및 해당 종속성을 분석한 다음 업그레이드에 대한 일련의 질문을 합니다. 이러한 질문에 대답하면 업그레이드 계획이 Markdown 파일 형식으로 작성됩니다.

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

  1. 업그레이드 요구 사항 및 기본 설정에 대한 Copilot의 질문에 답변합니다.
  2. Markdown 파일에서 생성된 업그레이드 계획을 검토합니다.
  3. 필요에 따라 Markdown 파일을 편집하여 업그레이드 단계를 변경하거나 컨텍스트를 더 추가합니다.
  4. 계획에 만족하면 Copilot에게 업그레이드를 진행하도록 지시합니다.

주의

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

다음 코드 조각은 계획의 구조를 보여 줍니다.

# .NET 9.0 Upgrade Plan

## Execution Steps

1. Validate that an .NET 9.0 SDK required for this upgrade is installed on the machine and if not, help to get it installed.
2. Ensure that the SDK version specified in global.json files is compatible with the .NET 9.0 upgrade.
3. Upgrade projects to .NET 9.0.
  - 3.1. Upgrade RazorMovie.csproj
  - 3.2. Upgrade RazorMovie.Tests.csproj
4. Run unit tests to validate upgrade in the projects listed below:
  - RazorMovie.Tests.csproj

## Settings

This section contains settings and data used by execution steps.

### Aggregate NuGet packages modifications across all projects

NuGet packages used across all selected projects or their dependencies that need version update in projects that reference them.

| Package Name                                     | Current Version     | New Version | Description              |
|:-------------------------------------------------|:-------------------:|:-----------:|:-------------------------|
| HtmlSanitizer                                    | 7.1.542             | 9.0.884     | Security vulnerability   |
| Microsoft.Data.SqlClient                         | 4.0.5               | 6.0.2       | Deprecated               |
| Microsoft.EntityFrameworkCore.Design             | 6.0.0-rtm.21467.1   | 9.0.5       | Recommended for .NET 9.0 |
| Microsoft.EntityFrameworkCore.SqlServer          | 6.0.0-rc.1.21452.10 | 9.0.5       | Recommended for .NET 9.0 |
| Microsoft.EntityFrameworkCore.Tools              | 6.0.0-rc.1.21452.10 | 9.0.5       | Recommended for .NET 9.0 |
| Microsoft.VisualStudio.Web.CodeGeneration.Design | 6.0.0-rc.1.21464.1  | 9.0.0       | Recommended for .NET 9.0 |

...

업그레이드 수행

업그레이드 계획이 준비되면 Copilot에 업그레이드를 시작하도록 지시합니다. 업그레이드 프로세스가 시작되면 Copilot는 채팅 창에서 수행하는 작업을 알려주고 모든 단계의 상태를 나열하는 업그레이드 진행률 세부 정보 문서를 엽니다. 문제가 발생하면 코필로트는 일시 중지하고 이러한 문제를 해결하는 데 도움이 되도록 지시하거나 도움을 요청합니다.

업그레이드 프로세스의 각 주요 단계는 로컬 Git 리포지토리에 커밋됩니다.

업그레이드 결과 검토

업그레이드가 완료되면 업그레이드의 모든 단계를 설명하는 보고서가 생성됩니다. 이 도구는 업그레이드 프로세스의 모든 부분에 대해 Git 커밋을 만들므로 변경 내용을 쉽게 롤백하거나 변경 내용에 대한 자세한 정보를 가져올 수 있습니다. 보고서에는 Git 커밋 해시가 포함되어 있으며 업그레이드가 완료된 후 수행해야 하는 단계를 설명하는 다음 단계 섹션이 제공됩니다.

다음 예제에서는 테스트 실패가 포함된 완료된 업그레이드에 대한 보고서를 보여줍니다.

# .NET 9 Upgrade Report

## Project modifications

| Project name     | Old Target Framework | New Target Framework | Commits            |
|:-----------------|:--------------------:|:--------------------:|--------------------|
| RazorMovie       | net6.0               | net9.0               | af8cf633, aa61a18d |
| MvcMovie         | net6.0               | net9.0               | cc8c9015           |
| WpfMovie         | net6.0-windows       | net9.0-windows       | 9c4b13f9           |
| RazorMovie.Tests | net6.0               | net9.0               | b8d85e97           |
| MvcMovie.Tests   | net6.0               | net9.0               | b8d85e97           |
| WpfMovie.Tests   | net6.0-windows       | net9.0-windows7.0    | b8d85e97           |

## NuGet Packages

| Package Name                                     | Old Version         | New Version | Commit Id |
|:-------------------------------------------------|:-------------------:|:-----------:|-----------|
| HtmlSanitizer                                    | 7.1.542             | 9.0.884     | af8cf633  |
| Microsoft.Data.SqlClient                         | 4.0.5               | 6.0.2       | bf8deeac  |
| Microsoft.EntityFrameworkCore.Design             | 6.0.0-rtm.21467.1   | 9.0.5       | bf8deeac  |
| Microsoft.EntityFrameworkCore.SqlServer          | 6.0.0-rc.1.21452.10 | 9.0.5       | bf8deeac  |
| Microsoft.EntityFrameworkCore.Tools              | 6.0.0-rc.1.21452.10 | 9.0.5       | bf8deeac  |
| Microsoft.VisualStudio.Web.CodeGeneration.Design | 6.0.0-rc.1.21464.1  | 9.0.0       | bf8deeac  |

## All commits

| Commit ID | Description                                             |
|:----------|:--------------------------------------------------------|
| af8cf633  | Update HtmlSanitizer package in RazorMovie.csproj       |
| aa61a18d  | Upgrade target framework in RazorMovie.csproj           |
| cc8c9015  | Upgrade to .NET 9 and update dependencies               |
| bf8deeac  | Update package references in MvcMovie.csproj            |
| 9c4b13f9  | Update WpfMovie.csproj to target .NET 9.0               |
| b8d85e97  | Update test projects to .NET 9 and enhance dependencies |

## Test Results

| Project Name           | Passed | Failed | Skipped |
|:-----------------------|:------:|:------:|:-------:|
| RazorMovie.Tests       |   0    |   0    |    0    |
| MvcMovie.Tests         |   2    |   0    |    0    |
| WpfMovie.Tests         |   6    |   1    |    0    |

## Next steps

- Review the test results and address the single failing test in `WpfMovie.Tests`.
- Ensure all updated NuGet packages are compatible with your application.
- Leverage new features and improvements in .NET 9.0 for your projects.

다음 단계

업그레이드 프로세스를 완료한 후:

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