WinFormsアプリのマイグレーションとモダナイゼーション
サンプルアプリ
WinFormsアプリのケースでサンプルとして使用するのは以下のアプリです。
実行し、Buttonをクリックすると以下のように表示されます。
WinFormsアプリのマイグレーション手順
マイグレーション時の注意点
現在、WinFormsのフォームデザイナーは、VS2019のPreviewでのみ利用可能であり、製品版のVS2019では利用することができません。Previewは、評価目的の用途に限定されており、業務における開発時には利用不可となっています。
現在はPreviewですが、時期がくれば利用できるようになると思われます。そこまでの暫定処置として以下の回避策を用いる必要があります。
デザイナーを使った開発を行いたい場合は、.NET Frameworkベースのプロジェクトを残しておき、ソースを.NET Coreのプロジェクトにポーティングするなどの工夫が必要です。
移行は前述した通り、以下の流れで実施します。
- .NET Portability Analyzerや.NET API アナライザーなどを使用して互換性の問題がないか確認する。
- Windows互換機能パックの利用を検討する。
- NuGetパッケージの更新を行う。
- プロジェクトの移行を行う。
それでは、流れに沿ってWinFormsプロジェクトの移行とモダナイゼーションを行います。
- C1ThemeControllerを追加する。
- .NET Portability Analyzerを使用して、移行可能かどうかの判定を行う。
- NuGetからMicrosoft.DotNet.Analyzers.Compatibilityパッケージを追加し、.NET API アナライザーを実行する。
- 判定結果で問題が出た場合、Windows互換機能パックMicrosoft.Windows.Compatibilityを使用して回避可能かどうかを検討する。回避可能である場合はパッケージを追加する。
- プロジェクトファイルを移行する。
上記のうち、1と5以外の手順については説明済みであるため、C1ThemeControllerを追加する手順、プロジェクトファイルの移行手順について紹介します。
ツールボックスからC1ThemeControllerを追加
.NET Framework版のWinFormsアプリプロジェクトにC1ThemeControllerを追加します。ツールボックスから対象のフォームにC1ThemeControolerをドラッグアンドドロップすると以下のウインドウが表示されます。
テーマは[アプリケーション全体][デザイン中のフォーム内][デザイン中のフォーム内にある特定のコントロール]の3つのスコープで適用することができます。
コントロールが配置済みであるフォームにドラッグアンドドロップすると、フォーム内にあるコンポーネントを検出し、どのようにテーマを適用するか編集することができます。
今回、ウインドウ内の各項目は以下の通り設定します。
- アプリケーションテーマを(none)
- c1ThemeController1テーマをExpressionDark
- 各コンポーネントのテーマはすべてデフォルトボタンをクリックして、(default)を適用
編集画面で[OK]ボタンをクリックすると「設定ファイルに内容を格納するか」の確認ダイアログが表示されるので[Yes]ボタンをクリックします。
デザイナー上でThemesが適用されたことを確認することができます。
プロジェクトの移行手順
プロジェクトは以下の手順で移行を行います。
- ソリューションにプロジェクトを追加
- プロジェクトにファイルを複写
- NuGetからパッケージを取得
- テスト
互換性に関する手順を済ませたのち、ソリューションに移行先となる.NET CoreのWindows Form Appを追加します。
追加したプロジェクトにファイルをコピーします。このとき、ComponentOneのライセンスファイルlicense.licxファイルがある場合、忘れずにコピーしてプロジェクトに追加します。
パッケージが存在する場合は、Update Packageを実行します。ここでは、C1ThemeControlが追加されているので、NuGetでGrapeCityのレポジトリからパッケージをダウンロードします。
.NET Coreプロジェクトを右クリックして、コンテキストメニューから[NuGetパッケージの管理]を選択します。
パッケージソースにGrapeCityを指定します。続けて、キーワードをC1Themesで絞り込みを行い、インストールします。
もし、パッケージソースにGrapeCityが追加されていない場合、ギアのアイコンをクリックします。
利用可能なパッケージソースの上にある[+]ボタンをクリックします。
項目 | 設定値 |
---|---|
名前 | GrapeCity |
ソース | http://nuget.c1.grapecity.com/nuget |
[ライセンスへの同意]ウインドウが表示されるので、[同意]ボタンをクリックします。
正しく移行ができると、以下の通り起動します。