針對 XAML 熱重新載入 進行疑難解答

適用於: Visual Studio 2019 和更新版本

本疑難解答指南包含詳細指示,應解決導致 XAML 熱重新載入 無法正常運作的大部分問題。

WPF 和 UWP 應用程式支援 XAML 熱重新載入。 如需作業系統和工具需求的詳細資訊,請參閱使用 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 熱重新載入] 選項。

Visual Studio [偵錯選項] 視窗的螢幕快照,其中已醒目提示 [啟用 XAML 熱重新載入] 選項。

確認您使用 [開始偵錯] 而不是 [附加至進程]

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>

確認您使用的是正確的組建組態名稱

您必須手動設定正確的 MSBuild 屬性以支援 XAML 熱重新載入 (請參閱上一節) ,或者您必須使用預設組建組態名稱 (偵錯) 。 如果您未正確設定 MSBuild 屬性,自定義組建組態名稱將無法運作,發行組建也不會運作。

確定您的程式未執行提升許可權

以系統管理員身分執行提升許可權/執行的應用程式不支援 XAML 熱重新載入。

確認您的 XAML 檔案沒有錯誤

如果您的 XAML 檔案在 [錯誤清單] 中顯示錯誤,則 XAML 熱重新載入 可能無法運作。

在 Visual Studio 2022 中啟用更徹底的搜尋以更新資源參考和樣式

XAML_HOT_RELOAD_ACCURACY_OVER_PERF將環境變數設定為 可1讓您進行更廣泛的搜尋,以更新 WPF 應用程式中的資源參考和樣式。 請注意,某些應用程式,例如使用第三方工具組的應用程式,可能會因為 XAML 熱重新載入 而發生顯著的延遲。 發生延遲時,熱重新載入 進度定時器會出現在 編輯器 狀態列中。

Visual Studio 2022 中 [XAML 熱重新載入 進度定時器] 的螢幕快照。

已知限制

以下是 XAML 熱重新載入 的已知限制。 若要解決您遇到的任何限制,只要停止調試程式,然後完成作業即可。

限制 Wpf UWP 附註
在應用程式執行時,將事件連接至控件 不支援 不支援 請參閱錯誤: 確定事件失敗。 在 WPF 中,您可以參考現有的事件處理程式。 在UWP應用程式中,不支援參考現有的事件處理程式。
在資源字典中建立資源物件,例如在應用程式的Page/Window或App.xaml 從 Visual Studio 2019 16.2 版和更新版本開始支援 支援 範例:
- 將 新SolidColorBrush增至資源字典以作為 StaticResource使用。
注意:使用 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 熱重新載入 時,您可能會遇到下列錯誤。

錯誤訊息 描述
確定事件失敗 錯誤表示您嘗試將事件連線到其中一個控制件,但應用程式執行時不支援此功能。
XAML 熱重新載入 不支援這項變更,而且不會在偵錯會話期間套用。 錯誤表示 XAML 熱重新載入 不支援您嘗試進行的變更。 停止偵錯會話、進行變更,然後重新啟動偵錯會話。

如果您發現想要看到支援的不支援案例,請使用建議 功能 選項讓我們知道。