Windows フォーム デスクトップ アプリを .NET 7 にアップグレードする方法
この記事では、Windows フォーム デスクトップ アプリを .NET 7 にアップグレードする方法について説明します。 Windows フォームはクロスプラットフォーム テクノロジである .NET 上で実行されますが、Windows フォームはまだ Windows 専用フレームワークです。 次のWindows フォーム関連するプロジェクトの種類は、.NET Upgrade Assistant を使用してアップグレードできます。
- Windows フォーム プロジェクト
- コントロール ライブラリ
- .NET ライブラリ
また、「.NET Frameworkから .NET への移植」ガイドの情報も確認する必要があります。
警告
Visual Basic Windows フォーム プロジェクトをアップグレードしないでください。 拡張機能にバグがあるようです。 この記事は、バグが修正されると更新されます。
前提条件
- Windows オペレーティング システム
- .NET 7 を対象とする Visual Studio 2022 バージョン 17.1 以降
- .NET 8 をターゲットとする Visual Studio 2022 バージョン 17.7 Preview 1 以降
- Visual Studio 用 .NET Upgrade Assistant 拡張機能
デモ アプリ
この記事は、.NET Samples GitHub リポジトリからダウンロードできる Windows フォーム Matching Game Sample プロジェクトをアップグレードするコンテキストで記述されています。
重要
.NET 7 のWindows フォームのバグにより、アップグレード後の起動時にサンプル プロジェクトがクラッシュします。 これは、今後の .NET Desktop Runtime 7.0.6 リリースで修正されます。 最新の .NET 8 プレビューには、同じ修正プログラムが含まれています。
アップグレードを開始する
複数のプロジェクトをアップグレードする場合は、依存関係のないプロジェクトから始めます。 Matching Game サンプルでは、 MatchingGame プロジェクトは MatchingGame.Logic ライブラリに依存するため、 MatchingGame.Logic を最初にアップグレードする必要があります。
ヒント
ソース管理やコピーなど、コードのバックアップを作成してください。
Visual Studio でプロジェクトをアップグレードするには、次の手順に従います。
ソリューション エクスプローラー ウィンドウで MatchingGame.Logic プロジェクトを右クリックし、[アップグレード] を選択します。
アップグレードの実行方法を選択するように求める新しいタブが開きます。
[ インプレース プロジェクトのアップグレード] を選択します。
次に、ターゲット フレームワークを選択します。 アップグレードするプロジェクトの種類に基づいて、さまざまなオプションが表示されます。 .NET Standard 2.0 は、ライブラリが Windows Froms などのデスクトップ テクノロジに依存せず、.NET Framework プロジェクトと .NET プロジェクトの両方で使用できる場合に適しています。 ただし、最新の .NET リリースでは、.NET Standard よりも多くの言語とコンパイラが改善されています。
[.NET 7.0] を選択し、[次へ] を選択します。
コード ファイルやライブラリなど、プロジェクトに関連するすべての成果物と共にツリーが表示されます。 個々の成果物またはプロジェクト全体 (既定値) をアップグレードできます。 [ アップグレードの選択] を選択 してアップグレードを開始します。
アップグレードが完了すると、結果が表示されます。
緑色の丸が塗りつぶされた成果物はアップグレードされ、空の緑色の円はスキップされました。 スキップされた成果物は、アップグレード アシスタントでアップグレードするものが見つからなかったことを意味します。
アプリのサポート ライブラリがアップグレードされたので、メイン アプリをアップグレードします。
アプリケーションのアップグレード
すべてのサポート ライブラリがアップグレードされると、メイン アプリ プロジェクトをアップグレードできます。 サンプル アプリでは、アップグレードするライブラリ プロジェクトは 1 つだけです。これは前のセクションでアップグレードされました。
- ソリューション エクスプローラー ウィンドウで MatchingGame プロジェクトを右クリックし、[アップグレード] を選択します。
- アップグレード モードとして [ インプレース プロジェクトのアップグレード ] を選択します。
- ターゲット フレームワーク の [.NET 7.0 ] を選択し、[ 次へ] を選択します。
- すべての成果物を選択したままにして、[ アップグレードの選択] を選択します。
アップグレードが完了すると、結果が表示されます。 Windows フォーム プロジェクトに警告記号が含まれていることがわかります。 これを展開すると、その手順に関する詳細情報が表示されます。
プロジェクトのアップグレード コンポーネントで、既定のフォントが変更されたことが示されていることに注意してください。 フォントはコントロール レイアウトに影響を与える可能性があるため、UI が正しく配置されるように、プロジェクト内のすべてのフォームとカスタム コントロールをチェックする必要があります。
クリーン ビルドを生成する
プロジェクトがアップグレードされたら、クリーンしてコンパイルします。
- ソリューション エクスプローラー ウィンドウで MatchingGame プロジェクトを右クリックし、[クリーン] を選択します。
- ソリューション エクスプローラー ウィンドウで MatchingGame プロジェクトを右クリックし、[ビルド] を選択します。
アプリケーションでエラーが発生した場合は、[ エラー一覧 ] ウィンドウでエラーを修正する方法を示す推奨事項が表示されます。
まとめ
Windows フォーム Matching Game Sample プロジェクトが .NET 7 にアップグレードされました。 独自のプロジェクトを移行すると、結果は異なります。 .NET Frameworkから .NET への移植に関するガイドと、.NET Framework記事から .NET にアップグレードした後のモダン化に関する記事を必ず確認してください。