.NETアップグレードアシスタントで、Windows上のデスクトップアプリを.NET6にマイグレート
現在、数百万台の社用PCにはWindows OSが使われています。Windows OS上では、幅広いデスクトップアプリが使用されています。多くのデスクトップアプリケーションはWinFormsやWPFといったMicrosoft .NET Framework上で構築されています。
.NET(旧称 .NET Core)の登場により、Microsoftはバージョン4.8を最後に.NET Frameworkの開発を停止しました。現在、Microsoft は.NET Frameworkの新機能を追加開発することはせず、修正バージョンだけを提供しています。
これらのアプリケーションは、.NET Frameworkから.NETに移行されることで、.NET Frameworkの多くの機能を使い続けながら、次のような.NETの新機能の恩恵を受けることができます。
オープンソースであり、軽量であり、 高性能であること。
1年毎に.NETの新しいバージョンが、2年毎にLTSバージョンがリリースされること。
デスクトップアプリがウェブ、クラウド、モバイル、ゲームなどの他のアプリとNETランタイムとFrameworkを共有すること。
.NETをアプリの一部のようにデプロイすることで、PCにインストールされている .NETのバージョンに影響を与えることなく、 .NETの最新バージョン、機能、APIをアプリが使用できること。
.NETアップグレードアシスタントで.Netのマイグレーションの工数が削減される
従来、デスクトップアプリの.NET Frameworkから.NETへのマイグレーションは、複雑で時間がかかる作業でした。しかし、現在、Microsoftは移行プロセスの迅速化を目指し、今まで開発者がマニュアルで実行しなければいけなかった操作を最少化するためにコマンドラインツールである.NETアップグレードアシスタントを提供するようになりました。
デスクトップアプリを.NETアップグレードアシスタントで.NET Frameworkから.NETにアップグレードするための主な操作は下記の通りです。
.NETアップグレードアシスタントツールをインストールする
プロジェクトをツールでマイグレーションする
エラーをマニュアルで修正する
以下で詳細に説明します。
.NETアップグレードアシスタントをインストールする
.NETアップグレードアシスタントをインストールするために、cmdまたはPowerShellコマンドウィンドウで下記のコマンドを実行します。
dotnet tool install -g upgrade-assistant
インストール完了後にはプロジェクトまたはソリューションでツールが使用可能です。
次に.NETアップグレードアシスタントでデスクトップアプリを.NET Framework 4.7.2から.NET 6にマイグレーションします。
プロジェクトをツールでマイグレーションする
コマンドウィンドウで、プロジェクトの中で対象となるソリューションファイル(*.sln)を含むフォルダに移動(ナビゲーション)した後、移行を開始するために下記のコマンドを実行します。
upgrade-assistant upgrade Sample.sln
このプロセスは以降、下記のように進みます。
ツールはソリューション内のプロジェクトの構造を分析し、各プロジェクトの移行手順を提案します。
ツールがバックアップ、プロジェクト選択、configファイルのアップデート等のアクションリストをステップ毎に提供します。終了するまで画面上の案内通りにマイグレーション操作を順番に選択します。
.NET 6への移行後、アシスタントツールがプロジェクト設定を自動的に選択します。
プロジェクトを選択すると、アシスタントツールがプロジェクトのマイグレーションのために実施するステップをリストします。
1つのプロジェクトのマイグレーションが完了するまで、これらのステップを順番に行います。完了後は次のプロジェクトのマイグレーションを開始します。
エラーをマニュアルで修正する
.NETアップグレードアシスタントは、Visual Studioにロードでき、ビルドできるプロジェクトの.NET 6に変換されたバージョンのソースコードを作り出します。ただし、下記の理由から変換後のプロジェクトがビルドされ、正常に動作することを完全には保証しません。
ソースコードが.NET 6に適応していないAPIを利用している可能性がある。
ソースコードが.NET Frameworkのみに対応するサードパーティーを利用している可能性がある。
Xamarin、WebForms、WCFのようなツールにサポートされていないプロジェクトである可能性がある。
そのため、ツールによるマイグレーションが完了した後、開発者はソリューションをVisual Studioにロードし、エラー検出、これまでに得たTipsや経験に従ってマニュアルで修正するためにソースコードをビルドする必要があります。
.NET 6へのマイグレーションにおける注意点
プロジェクトソースが、.NET 6では利用できない.NET Frameworkテクノロジーを使用していないか
Microsoftは、.NET 5+で利用できない技術について説明し、代替技術をマイクロソフトやコミュニティから推奨するためのWebページを作りました。
下記のリンクを参照しつつ、必要に応じて代替技術に置き換えていく必要があります。
Webページのリンク: .NET Framework technologies unavailable on .NET Core and .NET 5+
.NET Frameworkのプロジェクトソースに、サードパーティ製UIライブラリが使用されていないか
実際、ほとんどの主要なUIライブラリベンダーが、.NET Framework向けバージョンと同等か、それ以上の機能を持つ.NET 5、.NET 6に対応する新しいバージョンのライブラリをリリースしています。.NET 5、.NET 6のプロジェクトで古いバージョンから新しいバージョンにライブラリを置き換えるのは、Visual Studioを使えば非常に簡単に対応できます。
下記に特に人気のあるサプライヤーからの参考情報のリンクを掲載します。
Telerik: https://www.telerik.com/products/winforms.aspx
https://www.telerik.com/products/wpf/overview.aspx
Grapecity: https://www.grapecity.com/blogs/componentone-is-net-6-ready
DevExpress: https://www.devexpress.com/dotnet-core/
本記事に関連するNTQのC#プロジェクトのご紹介
NTQは、お客様のWindowsデスクトップアプリ向けに.NET Frameworkをアップグレードするプロジェクトを多数ご支援してまいりました。特に販売管理、在庫管理、CRM等の基幹システムに数多く携わっております。
例えば、下記のような.NET Frameworkのマイグレーションに対応してきました。
VB6/.NET Framework 2.0 から .NET Framework 4.7.x/4.8へのマイグレーション
.NET Frameworkから.NET Core 3.x/.NET 5へのマイグレーション
先述のような基幹システムに共通することは、プロジェクト数が多いことです。そのため、これらのシステムのマイグレーションにあたっては、ソースコードや機能を移行する前に新しいフレームワークを使用するプロジェクトのコードベースを初期化する工程でとても時間がかかります。
しかし、.NET Frameworkから.NET Core 3.x/.NET 5へ移行するプロジェクトに.NETアップグレードアシスタントを適用したところ、コードベースの初期化段階にかかる時間を90%以上短縮することができました。また、コードベースの品質を向上させ、この段階で発生するバグも削減できました。その結果、お客様がこのプロジェクトにかける労力、コスト、プロジェクト実施期間を短縮することができました。
NTQは.NETのマイグレーションに関連するプロジェクトを数多くご支援してきました。.NET Framework プラットフォームで開発されたデスクトップアプリを適切な価格で迅速に.NET 6マイグレーションすることができたと評価をいただくことが多いです。また、使い慣れたアプリを使い続けながら、操作が速くなり、より美しいインターフェースのアプリが使用できるようになったともコメントをいただいております。
本記事で扱ったような現在のデスクトップアプリを新しい.NETプラットフォームに移行したいというご要望を含め、マイグレーションをご支援しております。現在のシステム状況に適したソリューションをご提案いたしますので、お気軽にNTQまでご連絡ください。
お問い合わせページ
また、NTQでは社内エンジニアによる技術に特化した情報を配信しています。あわせて、ご覧ください。