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 2022:
アプリ内ツール バーが表示されない場合は、Visual Studio のメニュー バーから Debug>Options>XAML ホット リロードを選択します。 次に、[オプション] ダイアログ ボックスで [XAML ホット リロードを有効にする] オプションがオンになっていることを確認します。
[プロセスにアタッチ] ではなく [デバッグの開始] を使用していることを確認する
XAML ホット リロードでは、アプリケーションの起動時に環境変数ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO
が1
に設定されている必要があります。 Visual Studio では、 Debug>Start Debugging (または F5) コマンドの一部として値が自動的に設定されます。 代わりに [デバッグ]>[プロセスにアタッチ] コマンド XAML ホット リロードを使用したい場合は、環境変数を自分で設定します。
Note
環境変数を設定するには、[スタート] ボタンを使用して environment 変数を検索し システム環境変数の編集 選択します。 表示されるダイアログ ボックスで [環境変数] を選択し、ユーザー変数として追加して、値を 1
に設定します。 クリーンアップするには、デバッグが完了したら変数を削除します。
MSBuild のプロパティが正しいことを確認する
既定では、ソース情報はデバッグ構成に含まれています。 これは、プロジェクト ファイル内の MSBuild プロパティ ( *.csproj など) によって制御されます。 WPF の場合、プロパティは XamlDebuggingInformation
であり、それが True
に設定されている必要があります。 UWP の場合、プロパティは DisableXbfLineInfo
であり、それが False
に設定されている必要があります。 例えば次が挙げられます。
WPF:
<XamlDebuggingInformation>True</XamlDebuggingInformation>
UWP:
<DisableXbfLineInfo>False</DisableXbfLineInfo>
正しいビルド構成名を使用していることを確認します
XAML ホット リロードがサポートされるように正しい MSBuild プロパティを手動で設定するか (前のセクションを参照)、既定のビルド構成名 (Debug) を使用する必要があります。 MSBuild プロパティが正しく設定されていない場合、カスタム ビルド構成名は機能せず、リリース ビルドも機能しません。
プログラムが管理者特権で実行されていないことを確認する
XAML ホット リロードは、管理者特権で実行または管理者として実行されるアプリではサポートされていません。
XAML ファイルにエラーがないことを確認する
XAML ファイルの [エラー一覧] にエラーが表示されている場合、XAML ホット リロードが機能しない可能性があります。
Visual Studio 2022 でリソース参照とスタイルを更新するためのより詳細な検索を有効にする
XAML_HOT_RELOAD_ACCURACY_OVER_PERF
環境変数を1
に設定すると、WPF アプリケーションのリソース参照とスタイルをより広範に検索して更新できます。 サード パーティ製のツールキットを使用するアプリケーションなど、一部のアプリケーションでは、XAML ホット リロードで大幅な遅延が発生する可能性があることに注意してください。 遅延の発生時には、エディターのステータス バーにホット リロードの進行状況タイマーが表示されます。
既知の制限事項
XAML ホット リロードには次のような既知の制限事項があります。 発生した制限を回避するには、デバッガーを停止して、操作を完了します。
制限事項 | WPF | UWP | メモ |
---|---|---|---|
アプリ実行中の、コントロールへのイベントの接続 | サポートされていません | サポート対象外 | エラーを参照: Ensure Event Failed (イベント確認失敗)。 WPF では、既存のイベント ハンドラーを参照できます。 UWP アプリでは、既存のイベント ハンドラーの参照はサポートされていません。 |
アプリの Page/Window や 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 以降でサポートされます。 |
themes\generic.xaml でのスタイルの編集 | サポートされていません | サポート対象外 | XAML ホット リロードによって新しいスタイルが作成されます。オリジナルのスタイルは封印されます。 プラットフォームは、コントロールに適用された後に generic.xaml のスタイルをキャッシュするため、置き換えのためにアクセスできなくなります。 |
エラー メッセージ
XAML ホット リロードの使用中に、次のエラーが発生する場合があります。
エラー メッセージ | 説明 |
---|---|
Ensure Event Failed (イベント確認失敗) | このエラーは、コントロールの 1 つにイベントを接続しようとしていることを示します。これは、アプリケーションの実行中はサポートされません。 |
この変更は XAML ホット リロードではサポートされておらず、デバッグ セッション中には適用されません。 | このエラーは、行おうとしている変更が XAML ホット リロードでサポートされていないことを示します。 デバッグ セッションを停止し、変更してから、デバッグ セッションを再開してください。 |
サポートされていないシナリオで、サポートしてほしいものがあった場合は、[機能の提案] オプションを使用してお知らせください。