XAML ホット リロードのトラブルシューティング

適用対象: Visual Studio 2019 以降のバージョン

このトラブルシューティング ガイドには、XAML ホット リロードが正しく動作しなくなるほとんどの問題を解決する必要がある詳細な手順が含まれています。

XAML ホット リロードは、WPF アプリと UWP アプリでサポートされています。 オペレーティング システムとツールの要件の詳細については、「XAML ホット リロードを使用して XAML コードを記述してデバッグする」を参照してください。

ホット リロードが使用できない場合

アプリのデバッグ中にアプリ内ツール バーにメッセージ Hot Reload is not available が表示される場合は、この記事で説明されている手順に従って問題を解決します。

XAML ホット リロードが有効になっていることを確認する

この機能は、Visual Studio 2019 以降のバージョンでは既定で有効になっています。 アプリのデバッグを開始するときに、アプリ内ツール バーが表示されていることを確認します。これにより、XAML ホット リロードが使用可能であることが確認されます。

Visual Studio 2019:

Visual Studio 2019 の [XAML ホット リロード使用可能] ツール バーのスクリーンショット。

Visual Studio 2022:

Visual Studio 2022 の [XAML ホット リロード使用可能] ツール バーのスクリーンショット。

アプリ内ツール バーが表示されない場合は、Visual Studio のメニュー バーから [デバッグ>オプション>] [XAML ホット リロード] を選択します。 次に、[オプション] ダイアログ ボックスで、[XAML ホット リロードを有効にする] オプションが選択されていることを確認します。

[XAML ホット リロードを有効にする] オプションが強調表示されている Visual Studio デバッグ オプション ウィンドウのスクリーンショット。

[プロセスにアタッチ] ではなく [デバッグの開始] を使用することを確認します

XAML ホット リロードでは、アプリケーションの起動時に環境変数ENABLE_XAML_DIAGNOSTICS_SOURCE_INFOが に1設定されている必要があります。 Visual Studio では、 デバッグ>のデバッグ開始 (または F5) コマンドの一部として値が自動的に設定されます。 代わりに [プロセスにアタッチする]> コマンドで XAML ホット リロードを使用する場合は、環境変数を自分で設定します。

注:

環境変数を設定するには、[スタート] ボタンを使用して 環境変数 を検索し、[ システム環境変数の編集] を選択します。 開いたダイアログ ボックスで、[ 環境変数] を選択し、ユーザー変数として追加し、値を に 1設定します。 クリーンするには、デバッグが完了したら変数を削除します。

MSBuild プロパティが正しいことを確認する

既定では、ソース情報はデバッグ構成に含まれます。 これは、プロジェクト ファイル内の MSBuild プロパティ ( *.csproj など) によって制御されます。 WPF の場合、 プロパティは XamlDebuggingInformationです。これは に設定する True必要があります。 UWP の場合、 プロパティは です DisableXbfLineInfo。これは に設定する False必要があります。 例:

Wpf:

<XamlDebuggingInformation>True</XamlDebuggingInformation>

Uwp:

<DisableXbfLineInfo>False</DisableXbfLineInfo>

正しいビルド構成名を使用していることを確認する

XAML ホット リロードをサポートするように適切な MSBuild プロパティを手動で設定するか (前のセクションを参照)、既定のビルド構成名 (デバッグ) を使用する必要があります。 MSBuild プロパティを正しく設定しないと、カスタム ビルド構成名は機能せず、リリース ビルドも機能しません。

プログラムが管理者特権で実行されていないことを確認する

管理者特権で実行または管理者として実行するアプリでは、XAML ホット リロードはサポートされていません。

XAML ファイルにエラーがないことを確認する

XAML ファイルにエラー一覧にエラーが表示されている場合は、XAML ホット リロードが機能しない可能性があります。

Visual Studio 2022 でリソース参照とスタイルを更新するためのより詳細な検索を有効にする

環境変数を XAML_HOT_RELOAD_ACCURACY_OVER_PERF1 設定すると、より広範な検索で WPF アプリケーションのリソース参照とスタイルを更新できます。 サード パーティ製ツールキットを使用するアプリケーションなど、一部のアプリケーションでは XAML ホット リロードで大幅な遅延が発生する可能性があることに注意してください。 遅延が発生すると、ステータス バーにホット リロード進行状況タイマーエディター表示されます。

Visual Studio 2022 の 'XAML ホット リロード進行状況タイマー' のスクリーンショット。

既知の制限

XAML ホット リロードの既知の制限事項を次に示します。 発生した制限を回避するには、デバッガーを停止してから操作を完了します。

制限 Wpf UWP Notes (メモ)
アプリの実行中にイベントをコントロールに配線する サポート対象外 非サポート 「エラー: イベントが失敗したことを確認する」を参照してください。 WPF では、既存のイベント ハンドラーを参照できます。 UWP アプリでは、既存のイベント ハンドラーの参照はサポートされていません。
アプリのページ/ウィンドウや App.xaml などのリソース ディクショナリでのリソース オブジェクトの作成 Visual Studio 2019 バージョン 16.2 以降でサポートされています サポート 例:
- としてStaticResource使用するために、 をリソース ディクショナリに追加SolidColorBrushします。
注: 静的リソース、スタイル コンバーター、およびリソース ディクショナリに書き込まれたその他の要素は、XAML ホット リロードの使用中に適用/使用できます。 リソースの作成のみがサポートされていません。
- リソース ディクショナリ プロパティの Source 変更。
アプリの実行中に新しいコントロール、クラス、ウィンドウ、またはその他のファイルをプロジェクトに追加する サポート対象外 サポート対象外 なし
NuGet パッケージの管理 (パッケージの追加/削除/更新) サポート対象外 サポート対象外 なし
{x:Bind} マークアップ拡張機能を使用するデータ バインディングの変更 該当なし Visual Studio 2019 以降でサポートされる これにはWindows 10バージョン 1809 (ビルド 10.0.17763) 以降が必要です。 Visual Studio 2017 以前のバージョンではサポートされていません。
x:Uid ディレクティブの変更 該当なし サポート対象外 なし
複数のプロセスを使用する サポート サポートされている Visual Studio 2019 バージョン 16.6 以降でサポートされています。
テーマ\generic.xaml でのスタイルの編集 サポート対象外 非サポート XAML ホット リロードは新しいスタイルを作成します。元のスタイルはシールされています。 プラットフォームは、コントロールに適用された後に generic.xaml からスタイルをキャッシュします。これにより、置き換えにアクセスできなくなります。

エラー メッセージ

XAML ホット リロードの使用中に、次のエラーが発生する可能性があります。

エラー メッセージ 説明
イベントが失敗したことを確認する エラーは、アプリケーションの実行中にサポートされていないいずれかのコントロールにイベントをワイヤリングしようとしていることを示します。
この変更は XAML ホット リロードではサポートされていないため、デバッグ セッション中には適用されません。 エラーは、試みている変更が XAML ホット リロードでサポートされていないことを示します。 デバッグ セッションを停止し、変更を加え、デバッグ セッションを再起動します。

サポートされていないシナリオが見つかる場合は、 機能の提案 オプションを使用して、お知らせください。