はじめに
.NET Framework→.NET 10移行編、Microsoft Agent Framework編に続く、C# で出来ること一覧 2026年版(.NET 10) 実践シリーズ第3弾です。
1本目の記事では、CLI版.NET Upgrade Assistantが非推奨だったことが判明し、upgrade-assistant analyze自体がクラッシュして終わる、という尻切れトンボな結末でした。今回はその後継である「GitHub Copilotアップグレード」を、Visual Studio無しでVS Code拡張機能として試し、決着をつけます。
素材は前回と同じ、Microsoft公式のWinFormsサンプル「Matching Game」(.NET Framework 4.8にretarget済み、nuget.exeでMetroFrameworkのパッケージ復元も済んだ状態)です。
準備
1. GitHub Copilot Chat拡張機能の確認
以前入れていた「GitHub Copilot」拡張機能を開いたところ、非推奨になっており「GitHub Copilot Chat」への統合を案内されました。素直に従って乗り換えます。
2. GitHub Copilotアップグレード拡張機能をインストール
VS Codeの拡張機能ビュー(Ctrl+Shift+X)で「GitHub Copilotアップグレード」を検索してインストールします。
つまずき:@upgradeにも/agentにも反応がない
インストール後、ドキュメント通りにCopilot Chatパネルで@upgradeと入力しましたが、何も返ってきませんでした。トラブルシュートとして/agentでエージェント一覧を確認しようとしても、こちらも空振りでした。念のため複数形の/agentsも試しましたが、同様に反応がありませんでした。
まず切り分けのため、Copilot Chatに普通に話しかけてみました。
こんにちは
すると
何を手伝えますか?
必要なら、この WinForms プロジェクトのアップグレードや修正を進めます。
という返答があり、Copilot Chat自体は正常に動作していて、プロジェクトの文脈(WinFormsであること)もすでに認識していることが分かりました。@upgradeという特殊な呼び出し記法にこだわらず、自然言語でそのままお願いすることにしました。
このプロジェクトを.NET 10にアップグレードしてください
これで実行が始まりました。@upgradeや/agentが反応しなかった原因ははっきりしませんでしたが(インストール直後で拡張機能の登録が反映しきれていなかった可能性があります)、結果的に自然言語の指示でエージェントは問題なく動き出しました。
実行中は、コマンド実行やファイル変更のたびに許可を求められ、何度か「許可」ボタンを押しながら進める形でした。エージェントに丸投げというより、要所要所で人間の確認を挟みながら進む設計のようです。
実行結果
エージェントが自動でビルド検証まで行い、以下の結果を返してきました。
- ビルドは成功
- ただし警告33件
-
NU1701:MetroFrameworkが.NET Framework向けの古いパッケージであることによる互換性警告 -
CA1416:WinForms特有のWindows専用API使用に対するプラットフォーム制約の警告(コード分析ルール)
-
前回upgrade-assistantがクラッシュして到達できなかった「ビルドが通る状態」まで、ここで初めてたどり着きました。
警告への対応もエージェントに任せる
今回はWindows専用アプリという前提なので、CA1416は無視してよい旨を伝えた上で、警告への対応を依頼しました。
NU1701とCA1416の警告を確認して、対応が必要なら修正してください。CA1416は今回Windows専用アプリなので無視して問題ありません。
エージェントの対応は以下の通りでした。
-
MatchingGame.csproj:NU1701とCA1416をNoWarnに追加 -
MatchingGame.Logic.csproj:CA1416を抑制
単に警告を消すだけでなく、「CA1416はWindows専用アプリのため許容と判断」「NU1701はMetroFrameworkが古い.NET Framework向けパッケージであることに起因する制約として抑制、将来ライブラリを置き換えるなら抑制を外せる」という判断根拠まで説明してくれた上で、最終的にビルドは警告ゼロ・終了コード0で成功しました。
実際に動かして確認
最後に、.NET 10版として実際に起動しました。
dotnet run --project MatchingGame
無事に起動し、MetroFrameworkのフラットなUIも含めて、.NET Framework版と同じ見た目・動作を確認できました。
わかったこと
- 前回CLI版
upgrade-assistantで挫折した移行が、GitHub Copilotアップグレード(VS Code拡張機能)では最後まで完走できた -
@upgradeや/agentという決められた呼び出し方が効かない場合でも、Copilot Chatが文脈を理解していれば自然言語でお願いするだけで動く(ドキュメント通りに行かなくても、慌てず自然言語で話しかけてみる価値がある) - 警告への対応も、機械的な抑制ではなく「なぜ許容できるか」「将来何をすれば抑制を外せるか」まで説明した上で対応してくれる点は、単純な自動変換ツールにはない部分だと感じた
- 結果として、Visual Studioを一切使わずに.NET Framework→.NET 10移行を完了できた
「非推奨のCLIツールでクラッシュして終わった1本目」と「その後継でちゃんと完走した3本目」を合わせて読むと、2026年時点の.NET移行ツール事情の変化がよく分かる構成になったと思います。