.NET アップグレード アシスタントを使用して Windows フォーム アプリを .NET 5 にアップグレードする

.NET アップグレード アシスタントは、.NET Framework Windows フォーム (WinForms) アプリを .NET 5 にアップグレードするときに役立つコマンドライン ツールです。 この記事では、次について説明します。

  • .NET Framework Windows フォーム アプリに対してツールを実行する方法のデモ
  • トラブルシューティングのヒント

.NET Framework Windows フォーム アプリをアップグレードする

このセクションでは、.NET Framework 4.6.1 を対象として新しく作成された Windows フォーム アプリに対して .NET アップグレード アシスタントを実行する方法を説明します。 ツールのインストール方法の詳細については、「.NET アップグレード アシスタントの概要」を参照してください。

デモの初期セットアップ

ご自身の .NET Framework アプリに対して .NET アップグレード アシスタントを実行する場合は、このステップを省略できます。 その動作を確認するだけの場合は、このステップを見ると、使用するサンプル .NET Windows フォーム プロジェクトを設定する方法がわかります。

Visual Studio で、.NET Framework を使用して新しい Windows フォーム プロジェクトを作成します。

Visual Studio での新しい Windows フォーム プロジェクト

プロジェクトに WinformsTest という名前を付けます。 .NET Framework 4.6.1 を使用するようにプロジェクトを構成します。

Visual Studio で Windows フォーム プロジェクトを構成する

作成したプロジェクトとそのファイル (特にプロジェクト ファイル) を確認します。

upgrade-assistant の実行

ターミナルを開き、ターゲット プロジェクトまたはソリューションが配置されているフォルダーに移動します。 upgrade-assistant コマンドを実行します。このとき、ターゲットとするプロジェクトの名前を渡します (プロジェクト ファイルのパスが有効である限り、任意の場所からコマンドを実行できます)。

upgrade-assistant upgrade .\WinformsTest.csproj

ツールが実行され、行われるステップの一覧が表示されます。

.NET アップグレード アシスタントの初期画面

各ステップが完了すると、ツールにコマンドのセットが表示されます。ユーザーはそれらを使用して、次のステップを適用またはスキップすること、詳細を確認すること、ログを構成すること、プロセスを終了することができます。 あるステップで実行するアクションがないことが検出された場合は、そのステップがツールで自動的にスキップされ、実行するアクションを含む次のステップに進みます。 他に何も選択していない場合、Enter キーを押すと次のステップが開始されます。

この例では、適用ステップを毎回選択しています。 最初のステップは、プロジェクトのバックアップです。

.NET アップグレード アシスタントでのプロジェクトのバックアップ

ツールにバックアップのカスタム パスを入力します。または、既定値を使用します。その場合は、.backup という拡張子の付いたプロジェクトのバックアップが同じフォルダーに配置されます。 ツールで実行される次のステップは、プロジェクト ファイルを SDK スタイルに変換することです。

.NET アップグレード アシスタントによるプロジェクトの SDK スタイルへの変換

プロジェクトの形式が更新されたら、次のステップは、プロジェクトの TFM を更新することです。

.NET アップグレード アシスタントによる TFM の更新

次に、ツールによってプロジェクトの NuGet パッケージが更新されます。

.NET アップグレード アシスタントによる NuGet パッケージの更新

パッケージが更新されたら、次のステップは、テンプレート ファイル (存在する場合) を追加することです。 この場合、追加する必要があるテンプレート ファイルはありません。 このステップでは、次に示すように、アプリ構成ファイルを移行し、C# ソースを更新して修正プログラムを適用します。 このプロジェクトの構成ファイルまたはソース コードを変更する必要はなかったため、これらの手順は自動的に行われました。

.NET アップグレード アシスタントによってテンプレート ファイルが追加され、構成が移行される

これは最後のプロジェクトであるため、次のステップ "Move to next project" では、ソリューション全体の移行プロセスを完了するように求められます。

.NET アップグレード アシスタントでのソリューションの完了

このプロセスが完了すると、移行された Windows フォーム プロジェクトは次のようになります。

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net5.0-windows</TargetFramework>
    <OutputType>WinExe</OutputType>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
    <UseWindowsForms>true</UseWindowsForms>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
    <PackageReference Include="Microsoft.DotNet.UpgradeAssistant.Extensions.Default.Analyzers" Version="0.2.211730">
      <PrivateAssets>all</PrivateAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.Windows.Compatibility" Version="5.0.2" />
  </ItemGroup>
</Project>

.NET アップグレード アシスタントにより、アップグレード プロセスを続けるのに役立つアナライザーもプロジェクトに追加されることにご注意ください。

トラブルシューティングのヒント

.NET アップグレード アシスタントの使用時に発生するおそれがある既知の問題がいくつかあります。 場合によっては、.NET アップグレード アシスタントで内部的に使用される try-convert ツールに問題が発生することがあります。

その他のトラブルシューティングのヒントと既知の問題については、ツールの GitHub リポジトリを参照してください。

関連項目