Windows フォーム .NET Framework から .NET に移行する
この記事では、.NET アップグレード アシスタントを使用して、Windows フォーム デスクトップ アプリを .NET にアップグレードする方法について説明します。 .NET はクロスプラットフォーム テクノロジであっても、Windows フォームは Windows 専用のフレームワークのままです。
前提条件
- Windows オペレーティング システム。
- この記事で使用するデモ アプリをダウンロードして抽出します。
- .NET 9 を対象とする Visual Studio 2022 バージョン 17.12 以降。
- Visual Studio 用の .NET アップグレード アシスタント拡張機能。
評価
アップグレードを実行する前に、プロジェクトを分析する必要があります。 .NET アップグレード アシスタントを使用してプロジェクトに対してコード分析を実行すると、参照できるレポートが生成され、潜在的な移行の阻害要因が特定されます。
プロジェクトを分析してレポートを生成するには、ソリューション エクスプローラーでソリューション ファイルを右クリックし、アップグレードを選択します。 分析の実行の詳細については、「 .NET Upgrade Assistant を使用してプロジェクトを分析する」を参照してください。
依存関係を移行する
複数のプロジェクトをアップグレードする場合は、依存関係のないプロジェクトから始めます。 絵合わせゲームのサンプルでは、MatchingGame プロジェクトは MatchingGame.Logic ライブラリに依存しているため、MatchingGame.Logic を最初にアップグレードする必要があります。
ヒント
ソース管理やコピーなど、コードのバックアップを作成してください。
次の手順に従って Visual Studio でプロジェクトをアップグレードします。
[ソリューション エクスプローラー] ウィンドウで MatchingGame.Logic プロジェクトを右クリックし、[アップグレード] を選択します。
実行するアップグレードを選択するように求める新しいタブが開きます。
[In-place project upgrade] (インプレースのプロジェクトのアップグレード) を選択します。
次に、ターゲット フレームワークを選択します。
アップグレードするプロジェクトの種類に基づいて、さまざまなオプションが表示されます。 .NET Standard 2.0 は、.NET Framework と .NET の両方で使用できます。 これは、ライブラリがこのプロジェクトで実行するWindows フォームなどのデスクトップ テクノロジに依存しない場合に適しています。
.NET 9.0 を選択し次へを選択。
コード ファイルやライブラリなど、プロジェクトに関連するすべての成果物を含むツリーが表示されます。 個々の成果物またはプロジェクト全体 (既定) をアップグレードできます。 [Upgrade selection] (アップグレードの選択) を選択して、アップグレードを開始します。
アップグレードが完了すると、結果が表示されます。
緑で塗りつぶされた円が付された成果物はアップグレードされ、空の緑の円のものはスキップされました。 スキップされた成果物は、アップグレード アシスタントによってアップグレードする内容が見つからなかったものを意味します。
アプリのサポート ライブラリがアップグレードされたので、メインのアプリをアップグレードします。
Visual Basic プロジェクトの注意事項
現在、.NET アップグレード アシスタントは、.NET Framework 上の Visual Basic テンプレートによって作成された設定ファイルで System.Configuration
の使用を認識しません。 また、My.Computer
やMy.User
など、.NET Framework プロジェクトで使用されるMy
拡張機能の使用も考慮されません。 これらの拡張機能は .NET で削除されました。 この 2 つの問題のため、.NET アップグレード アシスタントを使用して移行した後、Visual Basic ライブラリはコンパイルされません。
この問題を解決するには、プロジェクトが Windows を対象とし、Windows フォームを参照する必要があります。
- 移行が完了したら、ソリューション エクスプローラー ウィンドウで MatchingGame.Logic プロジェクトをダブルクリックします。
<Project>/<PropertyGroup>
要素を見つけます。- XML エディターで、
<TargetFramework>
の値をnet9.0
からnet9.0-windows
に変更します。 <TargetFramework>
の後の行に<UseWindowsForms>true</UseWindowsForms>
を追加します。
プロジェクト設定は次のスニペットのようになります。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net9.0-windows</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
<OutputType>Library</OutputType>
<MyType>Windows</MyType>
... other settings removed for brevity ...
メイン プロジェクトを移行する
すべてのサポート ライブラリがアップグレードされたら、メインのアプリ プロジェクトをアップグレードできます。 このサンプル アプリでは、アップグレードするライブラリ プロジェクトは 1 つだけであり、これは前のセクションでアップグレードされました。
- [ソリューション エクスプローラー] ウィンドウで MatchingGame プロジェクトを右クリックし、[アップグレード] を選択します。
- [In-place project upgrade] (インプレースのプロジェクトのアップグレード) を選択します。
- ターゲット フレームワークの .NET 9.0 を選択し、 Next を選択します。
- すべての成果物を選択したままにして、[Upgrade selection] (アップグレードの選択) を選択します。
アップグレードが完了すると、結果が表示されます。 Windows フォーム プロジェクトに警告記号がどのように表示されているかに注意してください。 その項目を展開すると、その手順に関する詳細情報が表示されます。
プロジェクト アップグレード コンポーネントで、既定のフォントが変更されたことを示していることに注意してください。 フォントがコントロール レイアウトに影響する可能性があるため、UI が正しく配置されていることを確認するには、プロジェクト内のすべてのフォームとカスタム コントロールを確認する必要があります。
クリーン ビルドを生成する
メイン プロジェクトがアップグレードされたら、クリーンアップしてコンパイルします。
- [ソリューション エクスプローラー] ウィンドウで MatchingGame プロジェクトを右クリックし、[クリーンする] を選択します。
- [ソリューション エクスプローラー] ウィンドウで MatchingGame プロジェクトを右クリックし、[ビルド] を選択します。
アプリケーションでエラーが発生した場合は、[Error List] (エラー一覧) ウィンドウで、推奨される修正方法と共にそれらを確認できます。
Windows フォーム Matching Game Sample プロジェクトが .NET 9 にアップグレードされました。
アップグレード後のエクスペリエンス
.NET Framework から .NET にアプリを移植する場合は、.NET Framework から .NET にアップグレードした後に Modernize を確認してください 記事。
関連するコンテンツ
-
移植ガイドでは、.NET Framework から .NET にコードを移植するときに考慮すべき事項の概要を示します。 プロジェクトの複雑さによって、プロジェクト ファイルを最初に移行した後に実行する作業の量が決まります。
.NET Framework から .NET にアップグレードした後に最新化します。
.NET Framework 以降、.NET の世界は大きく変わりました。 このリンクでは、アップグレード後にアプリを最新化する方法について説明します。
.NET Desktop feedback