共用方式為


在 Visual Studio 中使用熱重載撰寫和偵錯程式碼(C#、Visual Basic、C++)

從 Visual Studio 2022 開始,Visual Studio 中的熱重載體驗適用於受控 .NET 和原生C++應用程式。 無論您正在處理哪種類型的應用程式,熱重載的目的是盡可能減少編輯之間的應用程式重新啟動次數。通過降低您用在等待應用程式重建、重新啟動、重新導航到先前位置等的時間,從而提升生產力。

我們可讓您編輯應用程式的程式代碼檔案,並立即將程式代碼變更套用至執行中的應用程式,也就是 熱重載,藉以改善生產力。 套用變更之後,請再次執行程式碼,方法是在應用程式本身採取動作(或透過某種定時器等等),並立即查看變更;不需要透過斷點暫停應用程式!

使用熱重載來更新正在執行的程式碼

  1. 根據支援的應用程式類型開啟專案。 請參閱 .NETC++ 支援的應用程式。

  2. 使用 F5 附加的調試程式啟動應用程式,或者,如果支援,Ctrl+F5

  3. 開啟程式代碼檔案並變更程序代碼。

  4. 使用 [熱重載] 按鈕套用程式碼變更,或按下 ALT+F10

    [熱重載] 按鈕的螢幕快照。

若要查看使用者介面中的變更,必須重新執行程序代碼。 例如,按鈕的後台程式碼必須重新執行,或透過計時器以間隔觸發的程式碼。 另一個例子是,由於 MetadataUpdateHandler 功能,ASP.NET Core 支援自動刷新瀏覽器。

支援 .NET 應用程式

  • 使用Visual Studio 2022並使用調試程式啟動應用程式時,基本熱重載體驗適用於大部分類型的 .NET 應用程式和架構版本。 此支援包括 .NET Framework、.NET Core 和 .NET 5+ (適用於 C# 和 Visual Basic 適用)。 在這種情況下的期望是,如果您使用調試器的話,請假設熱重載功能可供使用,並試試看!
  • 使用 Visual Studio 2022 但未使用調試程式 時(例如,使用 CTRL-F5 啟動應用程式),熱重載可在以大多數 .NET 6 應用程式類型為目標時使用。 在此案例中,未以 .NET 6+ 為目標的應用程式(也就是以 .NET 5 或以下為目標)不支援「無調試程式」案例,而且必須使用調試程式來取得熱重載支援。
  • 搭配 .NET 6+ 應用程式使用Visual Studio 2022時,大部分案例都支援。 此支援不限於上述新的「無調試程式」功能。 它也包含其他新功能,例如支援熱重載 Blazor 專案,以及更普遍地,在任何 ASP.NET 核心應用程式中編輯 Razor 檔案,以及 CSS 熱重載。 使用 Visual Studio 2022 搭配以 .NET 6 為目標的應用程式,可提供您最強大的熱重載體驗。

下表根據 Visual Studio 2022 (17.8) 中支援的最低 .NET 版本,哪些項目支援附加調試程式 (F5) 且未附加調試程式 (Ctrl+F5)。

應用程式類型 F5 Ctrl+F5 MetadataUpdateHandler 支援
控制台 .NET 6 .NET 6
在 Linux/macOS 上執行
(Docker 和 WSL)
.NET 8 .NET 6 .NET 8
在Arm64上執行 .NET 7 .NET 7 .NET 7
WPF .NET 6 .NET 6
WinForms .NET 6 .NET 6
ASP.NET .NET 6 .NET 6
Blazor 伺服器 .NET 6 .NET 6 .NET 6
Blazor WebAssembly .NET 6 .NET 6 .NET 6
毛 伊 島
(WinUI/Android/iOS)
.NET 6 -- --

您可以使用熱重載進行 的編輯 類型是由運行時間和編譯程式版本決定,而不是由您用來啟動應用程式的方法(F5 或 Ctrl+F5)。

在下列各節中,我們會提供其他詳細數據。

支援C++應用程式

使用 Visual Studio 2022 並使用除錯程式啟動您的應用程式時,您可以使用 [熱重載] 按鈕,在調試程式下執行時,熱重載原生C++應用程式。 使用 CMake 和 OpenFolder 專案建置的應用程式也支援熱重載。

若要讓項目支援熱重載,您需要設定下列選項:

  • 專案 > 屬性 > C/C++ > 一般 >偵錯資訊格式 必須設定為 [用於編輯並繼續的程式資料庫 /ZI]
  • 專案 > 屬性 > 連結器 > 一般 >啟用累加連結 必須設定為 [是 /INCREMENTAL]

如需支持的編輯,請參閱 C++支援的程式代碼變更

當使用調試工具時,Visual Studio 2022 與 .NET 應用程式搭配使用

使用 Visual Studio 2022 並使用調試程式啟動應用程式時,熱重載適用於大部分的應用程式架構。

在您擁有 .NET 並且使用 Visual Studio 管理調試器的任何地方,都應該能獲得基本的熱重載支援。 這一事實表示,即使是 Azure Functions 這類專案在此案例中也非常出色。

注意

根據預設,某些專案會使用混合模式偵錯,不支援熱重載。 您可以在專案設定中修改此設定,具體操作是將 [專案 > 屬性] 中的 > [偵錯] 和 > [開啟偵錯啟動設定檔] UI 中的選項 > [啟用機器碼偵錯] 設為 false。

Visual Studio 2022 搭配 .NET 應用程式,但不使用調試程式

在針對大多數 .NET 6+ 應用程式類型時,熱重載可在沒有調試器的情況下使用。

這項功能專屬於 .NET 6+。 未以 .NET 6+ 為目標的應用程式(也就是以 .NET 5 或以下為目標)不支援「無調試程式」案例,而且必須使用調試程式來存取熱重載功能。

此外,並非所有項目類型目前都支援「無調試程式」案例,請參閱支援 .NET 應用程式。

Visual Studio 2022 與 .NET 6+ 應用程式结合使用

如果您使用 Visual Studio 2022 並開發以 .NET 6+ 為目標的應用程式,您將能享受到最完善且功能強大的熱重載體驗。

此情形下支援的功能:

  • Blazor 應用程式(伺服器端和 WebAssembly)
  • 在 Blazor 和一般 ASP.NET Core 網站中編輯 Razor 檔案
  • CSS 熱重載
  • XAML 熱重載
  • 在沒有除錯程式的情況下執行應用程式時,熱重載支援 (如先前更詳細所述)

如果您的目標是 .NET 6+,您將在即將推出的 Visual Studio 2022 更新、.NET 功能集以及主要版本中繼續獲得改進。

ASP.NET Core 支援的情境

許多 ASP.NET 案例都支援基本熱重載體驗。 大部分 Web 應用程式類型中最普遍可用的功能是更改後端程式碼和其他 .NET 類別檔案的能力。 這項功能可在使用 Visual Studio 調試程式時運作,且存在於先前可用的熱重載的任何位置。 如需更具體的指引,請參閱 .NET 熱重載對 ASP.NET Core 的支援

對於以 .NET 6+ 為目標的 ASP.NET Core 開發人員,有其他功能不適用於較低版本的 .NET。 這些功能包括:

  • CSHTML: Razor CSHTML 檔案的編輯支援多種類型的修改。
  • 瀏覽器重新整理: 編輯 razor 檔案會在偵錯時自動重新整理網頁瀏覽器中的變更。 這項功能先前只能在不使用調試程序的情況下啟動應用程式時使用。
  • CSS 熱重載: 您可以在應用程式執行時變更 CSS 檔案,並在您輸入時立即將變更套用至執行中的應用程式。
  • 無調試程式:使用 Visual Studio 在沒有調試程式的情況下啟動 Web 應用程式時, 您會收到熱重載支援(CTRL-F5)。

支援的 .NET 變更

.NET 熱重載體驗由 調試程式 和 C# 編譯程式提供(Roslyn)。 Roslyn 支援編輯程式碼變更(C# 和 VB) 列出當前支援的編輯類型,及未來可能的增強功能。

不支援的 .NET 專案

某些專案設定無法使用即時重載:

  • 如果您在不使用調試程序的情況下使用 Visual Studio,熱重載僅適用於以 .NET 6+ 為目標的 .NET 應用程式。
  • 如果您使用 Visual Studio 調試程式執行應用程式,但已在設定中停用 Enable Hot Reload and Edit and Continue when debugging,則不支援熱重載。
  • 不支持發行版本或自定義構建配置。 您的項目必須使用 Debug 組建組態。
  • 如果您是以 F# 或 .NET Native 項目為目標。
  • .NET 熱重載不支援某些啟動或編譯優化。 例如,如果您的項目的偵錯設定檔是以下列方式設定,則不支援 .NET 熱重載:
    • 已為您的項目啟用 修剪功能。 例如,如果在您的專案檔案中的偵錯設定檔裡將 PublishTrimmed 設定為 True,則不會受到支援。
    • 已為您的專案啟用 ReadyToRun。 例如,如果在您的專案檔案中的偵錯配置檔中將 PublishReadyToRun 設定為 True,則此設定不受支援。

如需詳細資訊,請參閱 不支援的案例

設定熱重載

若要開啟、停用或設定熱重載,請參閱 設定編輯後繼續

警告訊息

如果您看到下列對話框,熱重載無法在不重新啟動的情況下套用目前的編輯。 您可以選擇重建應用程式並套用變更(重新啟動),或繼續編輯。 如果您重建,所有應用程式狀態都會遺失。 如果您繼續編輯,可能會發生其他變更或更正,而導致熱重載再次運作。

套用變更對話框的截圖

如果您在對話框中無法套用變更時選取 [永遠重建] 選項,則不會在目前的Visual Studio 會話中再次看到對話框,而Visual Studio會自動重建和重載,而不是顯示對話框。

故障排除

強烈建議檢查 [熱重載輸出] 視窗,以取得有關熱重載會話的詳細診斷資訊。

如果您在 .NET Core 上使用回應壓縮,請參閱 回應壓縮的相關信息。