次の方法で共有


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 は続行するか、新たに開始するかを尋ねます。

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

  • 評価ステージ - 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 に指示します。

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

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

  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 はチャット応答の次の手順を示して、プロセス後の対処方法を説明します。 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 バージョンで利用できる新機能と機能強化を適用します。