インフラジスティックス・ジャパン株式会社Blog

インフラジスティックス・ジャパン株式会社のチームメンバーが技術トレンド、製品Tips、サポート情報からライセンス、日々の業務から感じることなど、さまざまなトピックについてお伝えするBlogです。

.NET アップグレード アシスタントを利用して .NET Framework から .NET 5 に超簡単アップグレード 【WPF アプリケーション】

こんにちは!

テクニカルコンサルティングチームの古堅です。

本記事では、.NET Framework から .NET 5 の移行を手助けする ".NET アップグレード アシスタント" について紹介します。

.NET へ移行を計画している方へ

.NET 5 が2020年にリリースされました。

新しい .NET の登場と共に .NET Framework シリーズは、.NET Framework 4.8 が最後のメジャーアップデートであり、以降は新規機能の実装が行われません。

そのため、近い将来、現行の .NET Framework で作成されたアプリケーションは .NET へ移行を検討する必要があります。

特に、今年 (2021年) は LTS (Long Term Support) の対象である .NET6 がリリースされますので、.NET 6 をターゲットに移行計画を予定されている方も多いのではないでしょうか?

また、移行計画を立案する際に、気になるのは移行コストですね。

.NET Framework と .NET 5 は、基本的にコード互換性はあるものの、一部の API 廃止や、プロジェクトファイルの構成の変更など、移行コストは決してゼロではありません。

その移行コストをなるべく抑え、移行作業を手助けしてくれる .NET アップグレード アシスタントというツールがあります。

docs.microsoft.com

.NET アップグレード アシスタントは .NET Framework のアプリケーションを .NET 5 にアップグレードするツールです。

本記事では .NET アップグレード アシスタントを活用し、弊社で提供している WPF 技術トレーニング (下記記事) のソースコードに対して「簡単にアップグレードできるのか?」をデモしたいと思います。

blogs.jp.infragistics.com

.NET アップグレード アシスタント

.NET アップグレード アシスタント のインストール

.NET アップグレード アシスタントのインストール方法については、チュートリアルサイトにて紹介されていますので、ご確認ください。

dotnet.microsoft.com

もしインストール失敗する場合は、下記コマンドもお試しください。 "dotnet tool install -g upgrade-assistant --ignore-failed-sources" Github の説明によると、Nuget の設定によりインストールでエラーになる可能性があり、上記コマンドで回避出来ます。 https://github.com/dotnet/upgrade-assistant

.NET アップグレード アシスタントの実行コマンド

コマンドライン上で、upgrade-assistant コマンドを実行します。

ソリューション、または、プロジェクトファイルを対象に実行します。

upgrade-assistant upgrade <MySolution.sln>
upgrade-assistant upgrade<MyProject.csproj>

.NET アップグレード アシスタントの実行デモ

それでは .NET Framework の WPF アプリケーションに対して .NET アップグレード アシスタントを実行してみます。

upgrade-assistant upgrade IG-WPF-STANDARD-SAMPLE.sln

1) Back up project

まずは、バックアップを取得するか?について確認が行われます。

f:id:furugen098:20210422094927p:plain

2) Convert project file to SDK style

次に、プロジェクトファイルのコンバートが行われます。

f:id:furugen098:20210422095114p:plain

3) Clean up Nuget package references

Nuget パッケージのクリーンが行われます。

f:id:furugen098:20210422095313p:plain

4) Update TFM

TFM (Target Framework) の更新が行われます。

f:id:furugen098:20210422095521p:plain

5) Update Nuget Packages

Nuget パッケージの更新が行われます。

.NET 5 で動作するために、必要な Nuget のパッケージなどが追加されます。

f:id:furugen098:20210422095842p:plain

(このステップは、処理時間が掛かりました (5分ほど)、大規模なプロジェクトであれば、より時間がかかるかもしれません)

6)~8)は自動実行

.NET 5 の動作に必要なコンフィグファイルの追加や、.NET 5 の C# コードで更新が必要のソースコードに対して、残りの更新が行われます。

f:id:furugen098:20210422100108p:plain

f:id:furugen098:20210422100233p:plain

f:id:furugen098:20210422100324p:plain

アップグレード前後の変更内容の比較

今回のアップグレードの際に、変更が発生したソースコードは、プロジェクトファイルのみでした (バックアップファイルを除く)

f:id:furugen098:20210422123125p:plain

プロジェクトファイルの変更内容は以下です。 (左が .NET Framework / 右が .NET)

f:id:furugen098:20210422122613g:plain

変更前後で比較すると、プロジェクトのファイルのコード量は 152行 -> 49行と、かなりコンパクトになりました。

軽量化された原因は、主に以下となります。

・各ソースコードのファイルパスの記載が .NET 5 のプロジェクトでは不要になった ( .NET 5 の場合は、ディレクトリ(サブディレクトリ含む)にあるファイルが、自動的に管理対象となるため)

・.NET Framework 時点では、参照設定する必要があったアセンブリ (System.Xml / System.Core など) が .NET 5 では Nuget のパッケージでまとめられた

ビルド&動作確認

それでは、ツールによりアップグレードが完了したので、ビルドおよび動作確認をしてみましょう。

まずは、アップグレードされたソリューションファイル (*.sln) を開いてみます。

f:id:furugen098:20210422100513p:plain

念のため、対象のフレームワークが ".NET 5.0" に更新された確認してみます。無事アップグレード出来ていますね。

f:id:furugen098:20210422100900p:plain

それでは、ビルド&デバッグを実行してみます。正常にアプリケーションが起動できました!

f:id:furugen098:20210422100756p:plain

まとめ

個人的にアップグレードツールは、何かしら手こずる事が多い印象でしたが、.NET アップグレード アシスタントはスムーズにアップグレードできました。

.NET 5 に移行の際、各プロジェクトファイルの再構成は非常に労力が掛かりますが、.NET アップグレード アシスタントがそれを手助けしてくるので、まずは、.NET アップグレード アシスタントでアップグレード、必要な細かい修正はその後に行う。というアプローチが効率が良いと感じました。

コマンド1つで非常に簡単に実行できますので、ぜひ試してみてください!

UItimate UI for WPF トライアル版を利用するには

.NET 5対応の Ultimate UI for WPF は、Microsoft® Officeライクで高パフォーマンスなデスクトップおよびタッチデバイス向けアプリケーションの開発効率化を支援します。高速なグリッドやチャート、動的なデータ視覚化といったWPFコントロールを100種類以上収録しています。

jp.infragistics.com

UItimate UI for WPF はトライアル版での試用が可能です。

製品に関する技術的な問い合わせは こちらのページ よりアカウントの作成を行ってください。登録より30日間、弊社のテクニカルサポートをご利用いただくことが出来ますのでお気軽にお問い合わせください。

また、製品をご購入をご検討のお客様は こちらのページ より

開発全般に関するご相談はお任せください!

インフラジスティックス・ジャパンでは、各開発プラットフォームの技術トレーニング、コンサルテーションの提供、開発全般のご支援を行っています。

jp.infragistics.com

「古い技術やサポート終了のプラットフォームから脱却する必要があるが、その移行先のプラットフォームやフレームワークの検討が進まない、知見がない。」

「新しい開発テクノロジーを採用したいが、自社内にエキスパートがいない。日本語リソースも少ないし、開発を進められるか不安。」

「自社のメンバーで開発を進めたいが、これまで開発フェーズを外部ベンダーに頼ってきたため、ツールや技術に対する理解が乏しい。」

「UIを刷新したい。UIデザインやUI/UXに関する検討の進め方が分からない。外部のデザイン会社に頼むと、開発が難しくなるのではないか、危惧している。」

といったご相談を承っています。

お問い合せはこちらからお気軽にご相談ください。