目次
.NET アップグレード アシスタントの概要については以下を参照ください。
hiro128.hatenablog.jp
使い方
.NET アップグレード アシスタントは .NET CLI ツールです。PowerShell のようなコマンド シェル上で利用します。
インストール、アンインストールの方法は以下の通りです。
インストール
dotnet tool install -g upgrade-assistant
アンインストール
dotnet tool uninstall -g upgrade-assistant
-g
パラメーターを指定すると、PATH 環境変数に自動的に追加される既定の場所(%USERPROFILE%\.dotnet\tools)にツールがインストールされます。
インストール手順に関する Microsoft Docs は、以下を参照下さい。
docs.microsoft.com
ツールのアップデート
ツールをしばらく使用してなかった場合は、アップデートをしておきます。
dotnet tool update -g upgrade-assistant
アプリケーションのアップグレードの方法
アップグレードを行うには、PowerShell のようなコマンド シェルを開き、アップグレードを行いたいソリューションやプロジェクトが配置されているフォルダーに移動します。
アップグレードを行いたいソリューションやプロジェクトを指定して、 以下のコマンドを実行します。
upgrade-assistant upgrade .\WinFormsAppNetFramework.sln
以下のような感じで、これからアップグレードで行う処理の一覧と現在のステップで行う処理に対する選択肢が表示されます。
それぞれのステップで希望する選択肢を選んでいくとアップグレードが完了します。
それぞれのステップの処理の内容は以下の通りです。
1. Back up project | プロジェクトをバックアップします |
2. Convert project file to SDK style | csprojファイルを .NET Framework の非SDKスタイルから .NET の SDKスタイルへ変換します |
3. Clean up NuGet package references | パッケージ参照を分析し、packages.config ファイルから不要な参照を削除します |
4. Update TFM | TFM(ターゲット フレームワーク モニカー)を適切なものに更新します |
5. Update NuGet Packages | プロジェクトのNuGetパッケージを、必要に応じてステップ4で変更されたTFMをサポートするバージョンに更新します |
6. Add template files | テンプレートファイルがある場合に自動で追加します |
7. Update Winforms Project | Windowsフォーム固有の処理を行います |
a. Default Font API Alert | デフォルトフォントが変更されたため対処が必要であることをこのツールを使っているユーザーに認識してもらうためにツールの画面表示で通知します。(アプリケーションのソースコードは変更されません。) |
b. Winforms Source Updater | Program.cs に、高DPIモードを設定するSetHighDpiModeメソッドの呼び出しを追加します |
8. Upgrade app config files | app.config ファイルの内容を更新します |
a. Convert Application Settings | appsettings.jsonファイルに移行する必要がある設定が存在すれば移行します |
b. Convert Connection Strings | appsettings.jsonファイルに移行する必要がある接続文字列が存在すれば移行します |
c. Disable unsupported configuration sections | .NET 6 でサポートされない設定が存在すれば無効化します |
9. Update source code | ソースコードを更新します |
a. Apply fix for UA0002: Types should be upgraded | (本ツールで認識できる)更新が必要な型が存在すれば更新します |
b. Apply fix for UA0012: 'UnsafeDeserialize()' does not exist | .NET でサポートされていない UnsafeDeserialize() が存在すれば更新します |
10. Move to next project | ソリューション内の次のプロジェクトに移動します |
上記の通り、かなりの定型的作業を自動化してくれます。
アップグレードの手順に関する Microsoft Docs は以下を参照ください
docs.microsoft.com
変換後のソリューションを Visual Studio 2022 で開く
変換後のソリューションを Visual Studio 2022 で開くと以下の画像ように、問題がある箇所に警告が出ます。また、自動で変換できなかった箇所に問題があればビルドするとエラーになります。
この
- 警告が出ている箇所
- ビルドエラーが出る箇所
が手作業で修正が必要な部分となりますので、集計することで必要な手作業のおおよその作業量がわかります。
また、実際の移行を行うときはこれらの箇所を修正します。