次の方法で共有


GitHub Copilot アプリの最新化を使用して.NET アプリをアップグレードする

GitHub Copilotアプリの最新化は、.NET プロジェクトを新しいバージョンにアップグレードし、アプリケーションをAzureに移行する AI を利用したエージェントです。 この記事では、構造化された 3 段階のワークフロー (評価、計画、実行) を使用して、.NET アプリケーションをアップグレードする方法について説明します。

モダン化エージェントは、プロジェクトと依存関係を分析し、各段階で詳細なアップグレード ドキュメントを作成し、プロセス全体のコード修正に役立ちます。 .NET Framework から最新の.NETへの移行など、古い.NET バージョンから最新バージョンへのアップグレードがサポートされています。

[前提条件]

アップグレードGitHub Copilot開始する前に、開発環境でアプリの最新化を設定します。 インストール手順については、「Install GitHub Copilot app modernizationを参照してください。

アップグレードを開始する

アップグレードを開始するには、Copilotで modernize-dotnet エージェントを使用します。

  1. 開発環境で.NET プロジェクトまたはソリューションを開きます。

  2. 次のいずれかの方法を使用してエージェントを起動します。

    • Visual Studio: ソリューション エクスプローラーModernize を選択します。 または、GitHub Copilot チャット ウィンドウを開き、「@Modernize」と入力します。
    • Visual Studio Code: GitHub Copilot Chat パネルを開き、「@modernize-dotnet」と入力します。
    • GitHub Copilot CLI: 「@modernize-dotnet」と入力し、アップグレードまたは移行要求を続けます。
    • GitHub.com: リポジトリで modernize-dotnet コーディング エージェントを使用します。
  3. アップグレードまたは移行する内容をエージェントに伝えます。

アップグレードを開始すると、Copilot、Git リポジトリで作業している場合は、新しいブランチを作成するように求められます。 その後、Copilot 3 段階のワークフローを実行し、リポジトリの .github/upgrades の下に各ステージの Markdown ファイルを書き込みます。 .github/upgradesが以前の試行から既に存在する場合、Copilotは続行するか、新たに開始するかを確認します。

次の 3 つのステージがあります。

  • Assessment 段階 - Copilot があなたのプロジェクトを調べて、破壊的変更、互換性の問題、およびアップグレードの要件を特定します。
  • Planning stage - Copilotでは、すべての問題を解決する方法を説明する詳細な仕様が作成されます。
  • 実行段階 - Copilotが計画を順次タスクに分割し、アップグレードを実行します。

評価を開始して結果を確認する

評価ステージでは、プロジェクトの構造、依存関係、およびコード パターンを調べて、変更する必要がある内容を特定します。 Copilotは自動的にこのステージを開始し、assessment.md.github/upgradesファイルを生成します。

評価には、重大な変更、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)

...

評価を確認してカスタマイズするには:

  1. で ファイルを開きます。
  2. 特定された重大な変更と互換性の問題を確認します。
  3. プロジェクト固有のコンテキストまたは懸念事項をドキュメントに追加します。
  4. 計画段階に進むようCopilotに指示します。

計画を開始して計画を確認する

計画段階では、評価を詳細な仕様に変換し、すべての問題を解決する方法を説明します。 計画に進むよう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. で ファイルを開きます。

  2. アップグレード戦略と依存関係の更新を確認します。

  3. プランを編集してアップグレード手順を調整するか、必要に応じてコンテキストを追加します。

    注意事項

    この計画は、プロジェクト間の依存関係に基づいています。 移行パスを完了できない方法でプランを変更した場合、アップグレードは成功しません。 たとえば、 プロジェクト A が プロジェクト B に依存していて、アップグレード 計画から プロジェクト B を 削除すると、 プロジェクト A の アップグレードが失敗する可能性があります。

  4. 実行ステージに移動するようにCopilotに指示します。

実行を開始してアップグレードを実行する

実行ステージでは、検証基準を使用して計画を順次具体的なタスクに分割します。 Copilotに実行を続行するように指示すると、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. アップグレードを開始するようにCopilotに指示します。
  2. 進行状況を監視するには、Copilotがタスクの状態を更新する際にtasks.mdファイルを確認してください。
  3. Copilotが解決できない問題に直面した場合は、要求された支援を提供してください。
  4. Copilot変更から学習し、アップグレードを続行します。

このツールでは、プロセスのすべての部分に対して Git コミットが作成されるため、変更を簡単にロールバックしたり、変更内容に関する詳細情報を取得したりできます。

アップグレードを確認する

アップグレードが完了すると、Copilotチャット応答で推奨される次の手順が表示されます。 ファイルで、すべてのステップの状態を確認します。

このツールでは、アップグレード プロセスのすべての部分に対して 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. で最終的なタスクの状態を確認します。
  2. 失敗したテストまたはコンパイル エラーに対処します。
  3. 更新されたすべての NuGet パッケージがアプリケーションと互換性があることを確認します。
  4. アプリケーションを十分にテストして、アップグレードが成功したことを確認します。
  5. アップグレードされた.NET バージョンで利用できる新機能と機能強化を適用します。