訓練
學習路徑
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization
適用於: Visual Studio 2019 和更新版本
本疑難解答指南包含詳細指示,可解決大部分導致 XAML 熱重新載入 無法正常運作的問題。
WPF 和 UWP 應用程式支援 XAML 熱重新載入。 如需作系統和工具需求的詳細資訊,請參閱使用 XAML 熱重新載入 撰寫和執行 XAML 程式代碼並進行偵錯。
如果您在對應用程式進行偵錯時在應用程式內工具列中看到訊息 Hot Reload is not available
,請依照本文所述的指示解決問題。
此功能預設會在 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 屬性所控制(例如 *.csproj)。 若為 WPF,屬性為 XamlDebuggingInformation
,必須設定為 True
。 對於 UWP,屬性為 DisableXbfLineInfo
,其必須設定為 False
。 例如:
WPF:
<XamlDebuggingInformation>True</XamlDebuggingInformation>
UWP:
<DisableXbfLineInfo>False</DisableXbfLineInfo>
您必須手動設定正確的 MSBuild 屬性以支援 XAML 熱重新載入(請參閱上一節),或者您必須使用預設組建組態名稱 (Debug)。 如果您未正確設定 MSBuild 屬性,自定義組建組態名稱將無法運作,發行組建也不會運作。
執行提升許可權/以系統管理員身分執行的應用程式不支援 XAML 熱重新載入。
如果您的 XAML 檔案在 [錯誤清單] 中顯示錯誤,則 XAML 熱重新載入 可能無法運作。
將 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 熱重新載入 不支援您嘗試的變更。 停止偵錯會話、進行變更,然後重新啟動偵錯會話。 |
如果您發現想要查看支援的不支援案例,請使用 [ 建議功能 ] 選項讓我們知道。
訓練
學習路徑
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization
文件
對 XAML 熱重新載入進行疑難排解 - Visual Studio
修正您可能會遇到 XAML 熱重新載入 的問題。
WPF 和 UWP 應用程式的 XAML 熱重新載入 - Visual Studio (Windows)
使用 XAML 熱重新載入中的編輯和繼續功能在執行中的 .NET MAUI、WinUI 3、Windows Presentation Foundation (WPF) 或通用 Windows 平台 (UWP) 應用程式中修改 XAML 程式碼。
在偵錯時檢查 XAML 屬性 - Visual Studio (Windows)
在偵錯時使用即時可視化樹狀結構與即時屬性總管工具來檢查 XAML 屬性並取得 UI 元素的樹視圖。