GitHub Copilotモダン化は、プロジェクトを新しいバージョンの.NETにアップグレードし、.NET アプリケーションを迅速かつ自信を持ってAzureに移行するのに役立つGitHub Copilot エージェントです。 Visual Studio、Visual Studio Code、GitHub Copilot CLI、および GitHub.com 全体の評価、ソリューションの推奨事項、コード修正、検証について説明します。
このエージェントを使用して、次の操作を行います。
- 新しいバージョンの.NETにアップグレードします。
- テクノロジを移行し、Azureにデプロイします。
- .NET Framework からアップグレードする場合は特に、.NET アプリを最新化します。
- アプリケーションのコード、構成、依存関係を評価します。
- 適切なAzure リソースを計画して設定します。
- 問題を修正し、クラウド移行のベスト プラクティスを適用します。
- アプリが正常にビルドおよびテストされたことを検証します。
シナリオ
エージェントは、シナリオと呼ばれる複数のエンド ツー エンドの最新化ワークフロー を提供します。 各シナリオは、特定の種類のアップグレードまたは移行をガイドするマネージド ワークフローです。
| シナリオ | 説明 | プロンプトの例 |
|---|---|---|
| .NETバージョンのアップグレード | 以前の.NET バージョンから .NET 8、9、10 以降へのアップグレード。 | ソリューションを.NET 10にアップグレードします |
| SDK スタイルの変換 | 従来のプロジェクト形式を SDK スタイルに変換します。 | "SDK スタイルに変換する" |
| Newtonsoft.Json のアップグレード | Newtonsoft.Json を System.Text.Json に置き換えます。 | "Newtonsoft.Json からのアップグレード" |
| SqlClient のアップグレード | System.Data.SqlClient から Microsoft.Data.SqlClient にアップグレードします。 | "SqlClient の更新" |
| Azure Functions アップグレード | Azure Functionsインプロセスから分離ワーカー モデルにアップグレードします。 | Azure Functionsをアップグレードする |
| Semantic Kernelからエージェントへ | Semantic Kernel エージェントを Microsoft エージェント フレームワークにアップグレードします。 | "私のSKエージェントをアップグレードする" |
すべてのシナリオと 30 以上の組み込みのアップグレード スキルの完全なリファレンスについては、「 シナリオとスキルリファレンス」を参照してください。
フィードバックを提供する
Microsoftフィードバックを評価し、それを使用してエージェントを改善します。 次のいずれかのオプションを使用してフィードバックを残します。
Visual Studioでは、Suggest a feature オプションと Report a problem オプションを使用します。
@modernize-dotnet GitHub リポジトリで問題を提出します。
[前提条件]
エージェントを使用する前に、開発環境でGitHub Copilotモダン化を設定します。 インストール手順については、「GitHub Copilot モダン化のインストール」を参照してください。
.NET プロジェクトのアップグレード
モダン化エージェントは、次の種類の C# およびVisual Basic プロジェクトのアップグレードをサポートしています。
- ASP.NET Core (および MVC、Razor Pages、Web API などの関連テクノロジ)
- Blazor
- Azure Functions
- Windows Presentation Foundation (WPF)
- Windows フォーム
- WinUI
- .NET MAUIとXamarin
- クラス ライブラリ
- コンソール アプリ
- テスト プロジェクト (MSTest、NUnit、xUnit)
アップグレードを開始するには、GitHub Copilot を使用した .NET アプリのモダナイズを参照してください。
サポートされているアップグレード パス
エージェントは、次のアップグレード パスをサポートしています。
| 情報源 | ターゲット |
|---|---|
| .NET Framework (任意のバージョン) | .NET 8 以降 |
| .NET Core 1.x – 3.x | .NET 8 以降 |
| .NET 5 以降 | .NET 8 以降 |
.NET プロジェクトをAzureに移行する
最新化エージェントは、自動分析、AI 駆動型コード修復、ビルドと脆弱性チェック、デプロイの自動化により、Azure移行を簡略化します。
分析とインテリジェントな推奨事項。
Azure移行に対するアプリケーションの準備状況を評価し、依存関係と特定された問題に基づいて調整されたガイダンスを受け取ります。
AI を利用したコード修復。
事前に定義されたベスト プラクティス コード パターンを適用して、最小限の手動作業で最新化を加速します。
ビルドと CVE の自動解決。
アプリをビルドし、コンパイル エラーと脆弱性を解決し、開発を合理化します。
シームレスなデプロイ。
Azureにデプロイし、コードを開発から運用に迅速に移行します。
移行のための定義済みタスク
.NETの最新化GitHub Copilotには、業界のベスト プラクティスを把握し、一般的な移行シナリオをカバーする定義済みのタスクが用意されています。
Azure SQL DB、Azure SQL MI、Azure PostgreSQL など、Azureに基づいてマネージド ID ベースのデータベースにアクセス
オンプレミスまたはレガシ データベース (DB2、Oracle DB、SQL Server など) から Azure SQL DB、Azure SQL Managed Instance、または Azure PostgreSQL に移行して、データレイヤーを最新化します。 セキュリティで保護されたマネージド ID 認証を使用します。
Azure ファイル ストレージに移行します
スケーラブルなクラウドベースのファイル管理のために、ファイル I/O 操作をローカル ファイル システムから Azure File Storage に移動します。
Azure Blob Storage に移行する
オンプレミスまたはクロスクラウド オブジェクト ストレージ、またはローカル ファイル システム ファイル I/O を、非構造化データのAzure Blob Storageに置き換えます。
Microsoft Entra ID へ移行します最新の ID 管理のために、認証と承認を Windows Active Directory から Microsoft Entra ID (旧称 Azure AD) に移行します。
マネージド ID と Azure Key Vault 構成またはコードのプレーンテキスト資格情報を、シークレット管理用のセキュリティで保護されたマネージド ID とAzure Key Vaultに置き換えます。
Azure Service Bus に移行します
レガシまたはサードパーティのメッセージ キュー (MSMQ や RabbitMQ など) または Amazon SQS (AWS Simple Queue Service) からAzure Service Busに移行して、信頼性の高いクラウドベースのメッセージングを実現します。
Azure Communication Service 電子メールに移行します
SMTP メールの直接送信を Azure Communication Service に置き換えて、スケーラブルで安全な電子メール配信を実現します。
Apache Kafka 用 Confluent Cloud/Azure Event Hub に移行
ローカルまたはオンプレミスの Kafka から、Confluent Cloud または Azure Event Hubs を使用したマネージド イベント ストリーミングへの移行。
Azure で OpenTelemetry に移行します
log4net、Serilog、Windows イベント ログなどのローカル ログ フレームワークから、Azureの OpenTelemetry に移行します。
マネージドIDを使用してAzure Cache for Redis に移行します
メモリ内またはローカルの Redis Cache の実装をAzure Cache for Redisに置き換えて、高可用性、スケーラビリティ、エンタープライズ レベルのセキュリティを実現します。
動作方法
アップグレードまたは移行プロセスを開始するには、次を参照してください。
開発環境で.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コーディング エージェントを使用します。
アップグレードまたは移行する内容をエージェントに伝えます。
モダン化エージェントにアプリのアップグレードを依頼Copilot、Git リポジトリで作業している場合は、最初に新しいブランチを作成するように求められます。 次Copilotプロジェクトを評価し、3 段階のワークフローを実行します。 各ステージでは、リポジトリ内の .github/upgrades/{scenarioId} の下に Markdown ファイルが生成されるため、続行する前に次の内容を確認できます。
.github/upgrades/{scenarioId}が以前の試行から既に存在する場合、Copilotは続行するか、新たに開始するかを確認します。
Copilotは、プロジェクトの構造、依存関係、およびコード パターンを調べて包括的な評価を構築することから始めます。
assessment.md ファイルには、破壊的変更、API 互換性の問題、非推奨のパターン、アップグレード スコープが一覧表示されます。
評価後、Copilotは次の 3 つのステージを実行します。
Assessment: Copilot は、プロジェクト構造、依存関係、コード パターンを調べ、アップグレード戦略 (ボトムアップ、トップダウン、一括)、プロジェクトアップグレードアプローチ、テクノロジモダン化オプション、互換性処理など、レビューの戦略決定を提示します。 Copilotは、確認された決定を
upgrade-options.mdに保存します。Planning: Copilotは、評価と確認されたオプションを詳細な仕様に変換します。
plan.mdファイルには、アップグレード戦略、リファクタリング アプローチ、依存関係パス、リスク軽減策が文書化されています。Execution: Copilot は、
tasks.mdの検証基準を持つ、計画を順次具体的なタスクに分割します。 各タスクは、1つの変更と、それが成功したことをCopilotがどのように確認するかを記述します。
次に進む前に、 .github/upgrades/{scenarioId} の Markdown ファイルを編集してアップグレード手順を調整するか、コンテキストを追加します。
アップグレード戦略
評価段階では、エージェントによってソリューションが評価され、次のいずれかの戦略が推奨されます。
| 戦略 | 最適な用途 | 説明 |
|---|---|---|
| ボトムアップ | 深い依存関係グラフを持つ大規模なソリューション | 最初にリーフ プロジェクトをアップグレードしてから、上に向かって動作します。 |
| トップダウン | メイン アプリケーションに関するクイック フィードバック | 最初にアプリケーション プロジェクトをアップグレードしてから、依存関係を修正します。 |
| 一度にすべて | 小規模でシンプルなソリューション | すべてのプロジェクトを 1 回のパスでアップグレードします。 |
フロー モード
エージェントは、入力の一時停止量を制御する 2 つのフロー モードをサポートしています。
- 自動: エージェントは、一時停止することなくすべての段階を通して動作し、本物のブロッカーでのみ停止します。 経験豊富なユーザーや簡単なアップグレードに最適です。
- ガイド: エージェントは各ステージ境界で一時停止するため、続行する前に評価、計画、タスクを確認できます。 初めてのユーザーや複雑なソリューションに最適です。
モードを切り替えるには、" 一時停止" (ガイド モードに入る場合) または "続行" (自動モードに切り替える) を指定します。
ステート管理
エージェントは、すべてのアップグレード状態を .github/upgrades/{scenarioId}/に格納します。 フォルダーには次のものが含まれます。
| File | Purpose |
|---|---|
assessment.md |
ソリューションの分析 |
upgrade-options.md |
確認されたアップグレードの決定 |
plan.md |
順序付けされたタスクプラン |
tasks.md |
ライブ進行状況ダッシュボード |
scenario-instructions.md |
エージェントの永続メモリ (基本設定、決定、カスタム命令を含む) |
execution-log.md |
すべての変更の詳細な監査証跡 |
tasks/{taskId}/task.md |
タスクごとのスコープとコンテキスト |
tasks/{taskId}/progress-details.md |
タスクごとの実行に関するメモと結果 |
すべての状態はこのフォルダーに存在するため、IDE を閉じたり、セッションを切り替えたり、開発環境を切り替えたりすることもできます (たとえば、VS Code で開始し、Visual Studioで続行します)。 エージェントは中断した場所から再開します。
ヒント
.github/upgrades/ フォルダーをブランチにコミットします。 コミットされた状態はバックアップとして機能し、チーム メンバーはアップグレードの進行状況を表示できます。
アップグレードを実行する
各ステージが完了したら、必要に応じて生成されたファイルを確認して変更し、次のステージに進むようCopilotに指示します。
Execution ステージに到達したら、アップグレードを開始するようにCopilotに指示します。 Copilot問題が発生した場合、原因を特定し、修正プログラムを適用しようとします。 Copilot問題を修正できない場合は、ヘルプを求められます。 介入すると、Copilot行った変更から学習し、問題が再び発生した場合に自動的に適用しようとします。
アップグレードの結果
Copilotが各タスクを実行すると、.github/upgrades/{scenarioId} 内の tasks.md ファイルをすべてのステップの状態で更新します。 このファイルを確認して進行状況を監視します。 Copilotプロセスのすべての部分に対して Git コミットを作成するため、変更をロールバックしたり、変更内容を確認したりできます。
アップグレードが完了すると、Copilotチャット応答に次の手順が表示されます。
テレメトリ
このツールは、プロジェクトの種類、アップグレードの意図、およびアップグレード期間に関するデータを収集します。 開発環境はデータを収集して集計し、ユーザーを特定できる情報は含まれません。 Microsoftのプライバシー ポリシーの詳細については、「Visual Studio カスタマー エクスペリエンス向上プログラム」を参照してください。
関連コンテンツ
.NET