針對 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 2022:
如果您沒有看到應用程式內工具列,請從 Visual Studio 功能表欄選取 >[偵錯選項>XAML 熱重新載入]。 接下來,在 [選項] 對話框中,確定已選取 [啟用 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 熱重新載入 (請參閱上一節),或者您必須使用預設組建組態名稱 (Debug)。 如果您未正確設定 MSBuild 屬性,自定義組建組態名稱將無法運作,發行組建也不會運作。
請確定您的程式未提升許可權執行
執行提升許可權/以系統管理員身分執行的應用程式不支援 XAML 熱重新載入。
確認您的 XAML 檔案沒有錯誤
如果您的 XAML 檔案在 [錯誤清單] 中顯示錯誤,則 XAML 熱重新載入 可能無法運作。
啟用更徹底的搜尋,以更新 Visual Studio 2022 中的資源參考和樣式
將 XAML_HOT_RELOAD_ACCURACY_OVER_PERF
環境變數設定為 可 1
讓更廣泛的搜尋更新 WPF 應用程式中的資源參考和樣式。 請注意,某些應用程式,例如使用第三方工具組的應用程式,可能會因為 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 熱重新載入 會建立新的樣式;原始樣式會密封。 將泛型.xaml 中的樣式套用至控件之後,平臺會快取樣式,使其無法進行取代。 |
錯誤訊息
使用 XAML 熱重新載入 時,您可能會遇到下列錯誤。
錯誤訊息 | 描述 |
---|---|
確定事件失敗 | 錯誤表示您嘗試將事件連線到其中一個控制項,而應用程式執行時則不支援此事件。 |
XAML 熱重新載入 不支援這項變更,而且不會在偵錯會話期間套用。 | 錯誤表示 XAML 熱重新載入 不支援您嘗試的變更。 停止偵錯會話、進行變更,然後重新啟動偵錯會話。 |
如果您發現想要查看支援的不支援案例,請使用 [ 建議功能 ] 選項讓我們知道。