今回は「.NET アップグレード アシスタント」を使用してアプリケーションを .NET 8へ移行する方法ついてお届けします。
「.NET アップグレード アシスタント」は、以前のバージョンの .NET Frameworkや .NET Core、.NETで作成している .NETアプリケーションを、最新バージョンの .NETへアップグレードするツールです。
従来はCLIでのみ提供されており、こちらは本ブログでも紹介していました。
現在はこのCLI以外に .NET 8のリリースにあわせてVisual Studioの拡張機能としても提供されています。本記事ではこの拡張機能を利用して .NET Frameworkで作成したWindows Formsアプリケーションを .NET 8へアップグレードする方法について紹介します。
.NET アップグレード アシスタントのインストール
.NET アップグレード アシスタントのインストール方法は前述の公式ページに公開されています。
前提条件
.NET アップグレード アシスタントの実行には以下の条件がありますので予め環境を用意しておいてください。
- Windows オペレーティング システム
- Visual Studio 2022 17.1 以降
インストール手順
はじめにVisual Studioからインストールする方法を紹介します。Visual Studioのメニューから「拡張機能」-「Manage Extensions」をクリックします(最新バージョンのVisual Studio 2022 17.8.3では英語表記になっていますが、元々は「拡張機能の管理」という表記です)
次に「拡張機能の管理」の検索ボックスに「upgrade」を入力します。「.NET Upgrade Assistant」を選択して[ダウンロード]をクリックします。
ダウンロードが完了したらVisual Studioを閉じます。 拡張機能のインストール画面が表示されるので[Modify]をクリックしてインストールします。
「拡張機能の管理」で以下のようにエラー表示を繰り返す場合は、別の方法としてVisual Studio Marketplaceから直接「.NET Upgrade Assistant」をダウンロードしてインストールします。
Windows Formsアプリケーションを .NET 8にアップグレードする
手順としては以下のページを参考にします。
サンプルプロジェクトは、GitHubで公開されている「Matching Game Sample」を使用します。
このサンプルプロジェクトでは、すでにサポートが終了している「.NET Framework 4.5.2」が設定されているので、こちらを「.NET Framework 4.8.1」に更新しておきます。
サンプルプロジェクトのMatchingGameは MatchingGame.Logicに依存しているので、まず、MatchingGame.Logicを最初にアップグレードします。「ソリューション エクスプローラー」でMatchingGame.Logic プロジェクトを右クリックし、「Upgrade」をクリックします。
以下の画面が表示されるので「Upgrade project to newer .NET version」をクリックします。
アップグレードする方法として「In-place project upgrade」を選択して[Next]をクリックします。
ターゲットフレームワークを「.NET 8.0」を選択して[Next]をクリックします。
プロジェクト内でアップグレードするコンテンツを選択します。デフォルトではすべて選択した状態になっています。このままの状態で[Upgrade selection]をクリックします。
アップグレードが開始されます。完了すると以下のように結果が表示されます。「Complete: 13 succeeded, 0 failed, o skipped.」と表示されていて、すべて問題なくアップグレードできているのが確認できます。
次に、MatchingGameを同様の手順でアップグレードします。完了すると以下のように結果が表示されます。警告が3個表示されているのが確認できます。
「NuGet パッケージ マネージャー」から「MetroFramework」と「MetroFramework.RunTime」を削除します。これで警告の出ていた「MetroFramework.Design」、「MetroFramework.Fonts」、「MetroFramework.RunTime」の参照が削除されます。
最後にMainForm.csでMainForm
の基底クラスをMetroForm
からForm
に変更し、using句のMetroFramework.Forms
を削除してMatchingGameのビルドを実行します。
using MatchingGame.Logic;
using System;
using System.Drawing;
using System.Windows.Forms;
//using MetroFramework.Forms;
namespace MatchingGame
{
public partial class MainForm : Form
{
:
以下のようにデモアプリの画面が表示されれば完了です。
さいごに
今回は .NET アップグレード アシスタントを使って .NET FrameworkのWindows Formsアプリケーションを .NET 8にアップグレードする方法を紹介しました。今回はGitHubにあるサンプルで試してみましたが、次回は弊社の .NET製品を組み込んだアプリケーションのアップグレードについても紹介したいと思います。