GitHub Copilot モダン化で .NET Framework 4.8で作成したWindows Formsアプリを .NET 10へ移行する

本記事では、.NET Framework 4.8で作成されたWindows Formsのサンプルアプリケーションを、Visual Studio 2026の「GitHub Copilot モダン化」を使用して .NET 10へ移行する手順を紹介します。

今回の対象は、「SPREAD for Windows Forms 19.0J(スプレッド)」を利用した Windows Formsアプリケーションです。移行前のプロジェクトはSDKスタイルを使用しないクラシックな形式 (以下、クラシック形式)で、製品のアセンブリを直接参照していました。移行後は、SDKスタイルのプロジェクトに変換してSPREAD for Windows Forms(以下SPREAD)のNuGetパッケージを利用する構成に変更します。

事前準備

GitHub Copilot モダン化を使用してプロジェクトを移行する前に、対象アプリケーションの構成や開発環境を確認しておきます。移行処理ではプロジェクトファイルや参照設定が更新されるため、事前に現在の状態を把握しておくことで、移行後の差分やビルドエラーの原因を確認しやすくなります。

また、移行作業を始める前に、プロジェクト全体のバックアップを取得しておくことをおすすめします。ソース管理を使用している場合は、移行前の状態をコミットしておくと、問題が発生した場合でも元の状態に戻しやすくなります。

今回の移行作業では、以下の環境を使用します。

項目バージョン/内容
IDEVisual Studio 2026
移行元.NET Framework 4.8
移行先.NET 10(net10.0-windows)
OSWindows 11
ソリューションC:SpreadWinRibbonCS\SpreadWinRibbonCS.sln
プロジェクトC:SpreadWinRibbonCS\SpreadWinRibbonCS.csproj

移行対象となるSpreadWinRibbonCSは、SPREAD for Windows Formsの製品サンプルとして含まれているプロジェクトです。プロジェクト構成は以下の通りです。

SpreadWinRibbonCS/
├── SpreadWinRibbonCS.sln
├── SpreadWinRibbonCS.csproj
├── Program.cs
├── Form1.cs
├── Form1.Designer.cs
├── Form1.resx
├── App.config
└── Properties/
    ├── AssemblyInfo.cs
    ├── Resources.resx
    ├── Resources.Designer.cs
    ├── Settings.settings
    ├── Settings.Designer.cs
    └── licenses.licx

移行前の SpreadWinRibbonCS.csproj は、クラシック形式のプロジェクトファイルです。

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" />
  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <RootNamespace>SpreadWinRibbonCS</RootNamespace>
    <AssemblyName>SpreadWinRibbonCS</AssemblyName>
    <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="FarPoint.Win.SpreadJ, Version=19.0.4800.2026, ..." />
    <Reference Include="GrapeCity.Spreadsheet.WinForms.Ribbon, Version=19.0.4800.2026, ..." />
    <Reference Include="System.Windows.Forms" />
    <Reference Include="System.Drawing" />
    <Reference Include="System.Configuration" />
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

GitHub Copilotモダン化の概要

GitHub Copilot モダン化は、Visual Studioで .NET アプリケーションのアップグレードを支援する機能です。対象プロジェクトを分析し、移行先フレームワークの候補提示、互換性の確認、移行計画の作成、プロジェクトファイルの変換、ビルドエラーの修正支援までを一連の流れで進めることができます。

今回の作業では、GitHub Copilotが主に以下の処理を行います。

  • 対象ソリューション/プロジェクトの検出
  • アップグレード先フレームワーク候補の提示
  • 互換性分析レポートの生成
  • SDK スタイル変換の実行
  • 移行計画(plan.md)とタスク一覧(tasks.md)の作成
  • ビルドエラーの原因特定と修正案の適用
  • 最終ビルド検証

これらの作業内容は、Visual Studioのチャット上で進行状況を確認できるだけでなく、移行用のドキュメントとしてプロジェクト内にも保存されます。今回GitHub Copilotが作成する主なファイルは以下です。

.github/upgrades/scenarios/dotnet-version-upgrade/
├── assessment.md
├── plan.md
├── tasks.md
├── scenario-instructions.md
├── upgrade-options.md
└── tasks/
    ├── 01-verify-toolchain/
    ├── 02-convert-sdk-style/
    ├── 03-upgrade-winforms-app/
    └── 04-final-validation/

移行手順

ここからは、実際にGitHub Copilot モダン化を使用してプロジェクトを移行する手順を紹介します。GitHub Copilot モダン化は、Visual Studioのソリューションエクスプローラーから起動できます。対象プロジェクトを右クリックし、コンテキストメニューから「最新化」を選択します。

移行手順

GitHub Copilot Chatが起動した後は、画面上に提案されている「新しい .NET バージョンへアップグレードする」を選択します。同じテキストがプロンプトへセットされるため、そのまま「送信」します。

移行手順

送信後、GitHub Copilotはプロジェクトを解析するために必要なコマンドを実行し、アップグレード先のフレームワークや実行モードを確認します。今回の環境では、以下のようなレスポンスが返されました。

開始前に、設定を確認してください。
Target Framework
Upgrade to: net10.0 (.NET 10 LTS)
Available options:
•	net8.0 — .NET 8 LTS、サポート終了: 2026-11
•	net9.0 — .NET 9 STS、サポート終了: 2026-11
•	net10.0 — .NET 10 LTS、サポート終了: 2028-11 (推奨)
•	net11.0 — .NET 11 Preview、本番用途は非推奨
Project
•	Solution: C:\SpreadWinRibbonCS\SpreadWinRibbonCS.sln
•	Project: C:\SpreadWinRibbonCS\SpreadWinRibbonCS.csproj
•	Current workspace indicates: .NET Framework 4.8
Flow Mode
Mode: Automatic — エンドツーエンドで進め、ブロック時のみ確認します。
Available options:
•	Automatic — 途中確認を最小化 (default)
•	Guided — assessment / plan / breakdown ごとに確認
Source Control
git コマンドが環境で見つからないため、ブランチ作成や未コミット変更の自動退避はスキップします。
To proceed: Reply confirm or start
To change: 例: net8.0 にして, Guided mode, Git は使わず続行

SPREADを使用しているプロジェクトでは、このタイミングで製品固有の情報を GitHub Copilotに伝えておくと、NuGetパッケージへの置き換えや不要なファイルの整理をスムーズに進めやすくなります。

また、何度か移行を試した際に、Form1.resxのSPREAD関連リソースが削除され、Form1.Designer.csのSPREADコントロール初期化処理が置き換えられたことがありました。このような変更を避けるため、今回の移行では製品固有の情報をまとめて以下のように入力しています。

・製品のビルドには以下の NuGet パッケージが必要です。
https://www.nuget.org/packages/GrapeCity.Spread.WinForms.ja

・.NET でのビルドに licenses.licx は不要ですのでプロジェクトから除外してください。

・Form1.resx の SPREAD 関連リソース、および Form1.Designer.cs の SPREAD コントロール初期化処理は変更しないでください。

confirm

この入力によって、製品固有の前提を考慮しながらプロジェクトの検出、互換性の確認、依存関係の分析が行われます。評価が完了すると、以下のようにレポートの作成結果と主な検出事項が提示されます。

Noted. 指示内容をシナリオ設定に保存しました。以後このアップグレードでは以下を守ります。
•	GrapeCity.Spread.WinForms.ja をビルドに必要な NuGet パッケージとして扱う
•	licenses.licx はプロジェクトから除外する
•	Form1.resx の SPREAD 関連リソースは変更しない
•	Form1.Designer.cs の SPREAD コントロール初期化処理は変更しない
評価が完了し、以下を作成・表示しました。
•	C:\SpreadWinRibbonCS\.github\upgrades\scenarios\dotnet-version-upgrade\assessment.md
•	C:\SpreadWinRibbonCS\.github\upgrades\scenarios\dotnet-version-upgrade\upgrade-options.md
アップグレードオプションの確認が必要です。upgrade-options.md を確認してください。
To proceed: confirm または continue
To adjust: 変更したい項目を指定してください。

upgrade-options.mdを確認し、選択内容で問題がなければconfirmを入力して処理を続行します。confirmを入力すると、GitHub Copilotは選択内容に基づいてアップグレードを実行します。

完了後の出力では、SpreadWinRibbonCS.csprojが .NET Framework 4.8 から .NET 10(net10.0-windows)にアップグレードが行われ、SDK スタイルへの変換、GrapeCity.Spread.WinForms.ja 19.0.0が追加されたことが報告されました。また、最終ビルドがエラー:0/警告:0で成功したことも確認できます。

✅ .NET バージョンアップグレード完了
What changed: 4 タスクを完了し、1 プロジェクトを .NET Framework 4.8 から net10.0-windows にアップグレードしました。
SpreadWinRibbonCS.csproj は SDK-style 化され、GrapeCity.Spread.WinForms.ja 19.0.0 を参照しています。
最終 restore/build は 0 errors / 0 warnings で成功しました。自動テストプロジェクトは見つかりませんでした。

動作確認

移行が完了すると、下記のようにプロジェクトが外部で変更されたという警告が表示されます。変更内容を Visual Studioに反映するためプロジェクトを開きなおします。

移行手順

プロジェクトを再読み込みした後、プロジェクトのプロパティで対象フレームワークに .NET 10が選択されていること、NuGet パッケージとして GrapeCity.Spread.WinForms.ja (19.0.0)が追加されていることを確認します。

移行手順

ビルドおよび実行が成功したら、移行前と同じ画面が表示され、基本的な操作が問題なく行えることをチェックします。自動変換では判断できない表示崩れや操作時の違いがないか、実際にアプリケーションを起動して確認します。

移行手順

まとめ

今回は、GitHub Copilot モダン化を使用してSPREAD for Windows Formsの移行を行いました。Copilot モダン化は、分析、計画、SDK スタイル変換、ビルドエラー修正、最終検証までを一連のタスクとして実行、管理することができます。

一方で、SPREADのような製品を使用している場合は、どのNuGetパッケージを使用するのか、製品を含むビルドの際に必要となるファイルは何か、といった情報を事前に伝えておくことで移行をスムーズに進められます。

弊社Webサイトでは、製品の機能を気軽に試せるデモアプリケーションやトライアル版も公開していますので、こちらもご確認ください。

また、ご導入前の製品に関するご相談やご導入後の各種サービスに関するご質問など、お気軽にお問合せください。

\  この記事をシェアする  /