.NET MAUI の XAML ホット リロード

.NET マルチプラットフォーム アプリ UI (.NET MAUI) XAML ホット リロードは、実行中のアプリで XAML の変更の結果を表示できる Visual Studio の機能です。プロジェクトを再構築する必要はありません。 XAML ホット リロードを使用しない場合は、XAML の変更の結果を表示するたびにアプリをビルドして展開する必要があります。

デバッガーがアタッチされたデバッグ構成で .NET MAUI アプリが実行されている場合、XAML ホット リロードは XAML 編集を解析し、実行中のアプリに変更を送信します。 完全なページの UI は再作成されないため、UI の状態が保持され、編集の影響を受けるコントロールで変更されたプロパティが更新されます。 さらに、移動状態とデータが維持されるため、アプリ内の場所を失うことなく、UI をすばやく反復処理できます。 そのため、UI の変更を検証するために、アプリの再構築と展開に費やす時間を短縮できます。

既定では、編集結果を表示するために XAML ファイルを保存する必要はありません。 その代わり、入力するとすぐに更新が適用されます。 ただし、Windows では、ファイルの保存時にのみ更新するようにこの動作を変更できます。 これを行うには、Visual Studio のメニューバーで デバッグ > オプション> XAML ホット リロード を選択し、利用可能なホット リロード IDE 設定で ドキュメント保存時に XAML ホット リロードを適用する チェックボックスにチェックを入れます。 より大きな XAML 更新を行い、完了するまで表示したくない場合は、ファイル保存時にのみ更新した方が便利なこともあります。

.NET MAUI を使用せずにネイティブ UWP または WPF アプリを作成する場合は、「WPF アプリと UWP アプリの XAML ホット リロードとは」を参照してください。

XAML ホット リロードは、Visual Studio 2022 と Visual Studio 2022 for Mac の両方で使用できます。 Windows では、XAML ホット リロードは、エミュレーター、シミュレーター、物理デバイスの Android、iOS、WinUI で使用できます。 Mac では、XAML ホット リロードは、エミュレーター、シミュレーター、物理デバイスの Android、iOS、Mac Catalyst で使用できます。

重要

XAML ホット リロードでは、イベント ハンドラーを含む C# コードは再読み込みされません。

XAML ホット リロードを有効にする

XAML ホット リロードは、Visual Studio 2022 では既定で有効になっています。 以前に無効にされていた場合は、Visual Studio のメニュー バーで デバッグ > オプション > XAML ホット リロード を選択すると有効にできます。 次に、オプション ダイアログ ボックスで XAML ホット リロードを有効にするWinUI (.NET MAUI を含む)Android および iOS (.NET MAUI) オプションにチェックが入っていることを確認します。

XAML Hot Reload options for .NET MAUI in Visual Studio.

その後、ビルド設定の iOS で、リンカーが「リンクしない」に設定されていることを確認します。

複数のプラットフォームで再読み込みする

XAML ホット リロードでは、1 つのプロジェクト アプリではなく、プラットフォームごとに個別のヘッド プロジェクトがある場合、Visual Studio と Visual Studio for Mac で複数のプラットフォームの同時デバッグがサポートされます。 たとえば、Android と iOS のターゲットを同時に展開して、両方のプラットフォームに一度に変更内容が反映されていることを確認できます。 Windows の複数のプラットフォームでデバッグするには、「方法: 複数のスタートアップ プロジェクトを設定する」を参照してください。 Mac の複数のプラットフォームでデバッグするには、「複数のスタートアップ プロジェクトを設定する」を参照してください。

トラブルシューティング

XAML ホット リロード出力には、トラブルシューティングに役立つステータス メッセージが表示されます。 Visual Studio では、メニューバーで 表示 > 出力 を選択してから 出力を表示:ドロップダウンで Xamarin ホット リロード を選択すると表示できます。 Visual Studio for Mac では、ステータス バーの XAML ホット リロード の上にマウス カーソルを置くと表示できます。

XAML ホット リロードの初期化に失敗した場合は、最新バージョンの .NET MAUI (IDE の最新バージョン) を使用していること、および iOS リンカー設定がプロジェクトのビルド設定で [リンクしない] に設定されていることを確認する必要があります。

XAML ファイルを保存するときに何も起きなければ、IDE で XAML ホット リロードが有効になっていることを確認します。 詳細については、「XAML ホット リロードを有効にする」を参照してください。

XAML ホット リロード パーサーに無効と見なされるような変更を行うと、エディターにエラーが下線付きで表示され、[エラー リスト] ウィンドウに含められます。 ホット リロードのエラーには、「XHR」で始まるエラー コードが付きます (XAML ホット リロードの場合)。 ページにこのようなエラーがある場合、XAML ホット リロードは、エラーが修正されるまで、実行中のアプリに変更を適用しません。

XAML ホット リロードのセッション中は、ファイルまたは NuGet パッケージを追加または削除したり、名前を変更したりできません。 ファイルまたは NuGet パッケージを追加するか削除する場合は、XAML ホット リロードを引き続き使用するようにアプリを再構築して再展開します。

[XamlCompilation(XamlCompilationOptions.Skip)] での XAML コンパイルの無効化はサポートされていないため、ライブ ビジュアル ツリーで問題が発生する可能性があります。 ライブ ビジュアル ツリーの詳細については、「.NET MAUI アプリのビジュアル ツリーを調べる」を参照してください。