.NET アップグレード アシスタントの概要

.NET の新しいバージョンは年間を通じてリリースされていますが、メジャー リリースは年に 1 回です。 .NET アップグレード アシスタントは、以前のバージョンの .NET、.NET Core、.NET Framework から最新バージョンにアプリをアップグレードするのに役立ちます。

.NET アップグレード アシスタントは、.NET の最新バージョンへのアプリのアップグレードを支援するように設計された Visual Studio 拡張機能およびコマンド ライン ツールです。

.NET アップグレード アシスタントに関連する問題は、Visual Studio 内で [ヘルプ]>[フィードバックの送信]>[問題の報告]を選択して報告できます。

アップグレード アシスタントをインストールする

.NET アップグレード アシスタントは、Visual Studio 拡張機能または .NET コマンドライン ツールとしてインストールできます。 詳細については、「.NET アップグレード アシスタントをインストールする」をご覧ください。

サポートされている言語

次のコード言語がサポートされています。

  • C#
  • Visual Basic

サポートされるプロジェクト

次の種類のプロジェクトがサポートされています。

  • ASP.NET
  • Azure Functions
  • Windows Presentation Foundation
  • Windows フォーム
  • クラス ライブラリ
  • コンソール アプリ
  • .NET ネイティブ UWP
  • Xamarin フォーム
  • .NET MAUI

アップグレード パス

次のアップグレード パスがサポートされます。

  • .NET Framework から .NET へ
  • .NET Core から .NET へ
  • UWP から WinUI 3 へ
  • 以前の .NET バージョンから最新の .NET バージョンへ
  • Azure Functions v1-v3 から v4 への分離
  • Xamarin. Forms から .NET MAUI へ
    • XAML ファイル変換では、名前空間のアップグレードのみがサポートされています。 より包括的な変換を行う場合は、Visual Studio 2022 バージョン 17.6 以降を使用してください。

Visual Studio 拡張機能を使用したアップグレード

.NET Upgrade Assistant 拡張機能をインストールしたら、ソリューション エクスプローラー ウィンドウでプロジェクトを右クリックし、[アップグレード] を選択してください。

注意事項

ソース管理を使用していない場合は、アップグレードする前にプロジェクトをバックアップしてください。

The .NET Upgrade Assistant's Upgrade menu item in Visual Studio.

タブが開き、プロジェクトの種類に基づいて、さまざまなスタイルのアップグレードが提供されます。

  • インプレースのプロジェクトのアップグレード

    このオプションは、コピーを作成せずにプロジェクトをアップグレードします。

  • Side-by-side のプロジェクトのアップグレード

    プロジェクトをコピーし、コピーをアップグレードし、元のプロジェクトはそのままにしてください。

  • Side-by-side での増分

    複雑な Web アプリに適しています。 ASP.NET から ASP.NET Core にアップグレードするには、かなりの作業と時には手動リファクタリングが必要です。 このモードでは、.NET プロジェクトが既存の .NET Framework プロジェクトの横に配置され、.NET プロジェクトに実装されているエンドポイントがルーティングされますが、他のすべての呼び出しは .NET Framework アプリケーションに送信されます。

    このモードでは、ASP.NET またはライブラリ アプリを段階的にアップグレードできます。

アプリがアップグレードされると、アップグレードに関連付けられたプロジェクトに関連するすべての成果物を示す状態画面が表示されます。 各アップグレード成果物を展開して、状態に関する詳細情報を読むことができます。 次のリストに状態アイコンの説明を示します。

  • 塗りつぶされた緑色のチェックマーク: 成果物がアップグレードされ、正常に完了しました。
  • 塗りつぶされていない緑色のチェックマーク: アップグレードする成果物に関する情報が、ツールで見つかりませんでした。
  • 黄色の警告記号: 成果物はアップグレードされましたが、考慮する必要がある重要な情報があります。
  • 赤色の X: 成果物はアップグレードされる予定でしたが、アップグレードに失敗しました。

The .NET Upgrade Assistant's Upgrade results tab in Visual Studio.

さらに、アップグレード アシスタントが実行したアクションは、次の図に示すように、アップグレード アシスタント ソースの [出力] ウィンドウに記録されます。

The output window in Visual Studio showing the results from the .NET Upgrade Assistant.

プロジェクトをアップグレードしたら、十分にテストする必要があります。

CLI ツールを使用したアップグレード

.NET アップグレード アシスタント CLI ツールをインストールしたら、ターミナル ウィンドウを開き、アップグレードするプロジェクトが含まれているディレクトリに移動してください。 upgrade-assistant --help コマンドを使用すると、CLI が提供する使用可能なオプションを確認できます。

注意事項

ソース管理を使用していない場合は、アップグレードする前にプロジェクトをバックアップしてください。

upgrade-assistant upgrade コマンドを使用してツールを実行してください。現在のフォルダー以下のすべてのプロジェクトが一覧表示されます。 CLI ツールにより、アップグレードするプロジェクトを選択する対話型の方法が提供されます。 方向キーを使用して項目を選択し、Enter キーを押して項目を実行してください。 アップグレードするプロジェクトを選択してください。 この記事で提供される例では、現在のフォルダーの下に次の 4 つのプロジェクトがあります。

 Selected options
───────────────────────────────────────────────────────────
 No options specified, follow steps below to continue

 Steps
─────────────────
 Source project
─────────────────

Which project do you want to upgrade (found 9)?

> MatchingGame (winforms\MatchingGame\MatchingGame.csproj)
  MatchingGame.Logic (winforms\MatchingGame.Logic\MatchingGame.Logic.csproj)
  StarVoteControl (csharp\StarVoteControl\StarVoteControl.csproj)
  WebSiteRatings (csharp\WebSiteRatings\WebSiteRatings.csproj)

  Navigation
    Exit

アップグレードするプロジェクトによっては、アップグレードの続行方法を指定するオプションが表示される場合があります。

  • インプレースのプロジェクトのアップグレード

    このオプションは、コピーを作成せずにプロジェクトをアップグレードします。

  • Side-by-side のプロジェクトのアップグレード

    このオプションは、.NET Framework プロジェクトでのみ使用できます。 プロジェクトをコピーし、コピーをアップグレードし、元のプロジェクトはそのままにしてください。

 Selected options
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
 Source project     C:\Code\winforms\MatchingGame\MatchingGame.csproj

 Steps
───────────────────────────────
 Source project / Upgrade type
───────────────────────────────

How do you want to upgrade project MatchingGame?

> In-place project upgrade
  Side-by-side project upgrade

  Navigation
    Back
    Exit

この手順の後、アップグレード可能なターゲット フレームワークが複数ある場合は、ターゲットを選択してください。

 Selected options
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
 Source project     C:\Code\Work\dotnet\dotnet-docs\docs\core\porting\snippets\upgrade-assistant-wpf-framework\winforms\MatchingGame\MatchingGame.csproj
 Ugrade type        Inplace

 Steps
──────────────────────────────────────────────────
 Source project / Ugrade type / Target framework
──────────────────────────────────────────────────

What is your preferred target framework?

> .NET 6.0 (Supported until November, 2024)
  .NET 7.0 (Supported until May, 2024)
  .NET 8.0 (Try latest preview features)

  Navigation
    Back
    Exit

プロジェクトをアップグレードしたら、十分にテストする必要があります。