共用方式為


設定 [編輯後繼續] (C#、VB、C++)

您可以在設計階段從 Visual Studio 工具>選項 功能表停用或啟用熱重新載入,先前稱為 [編輯並繼續]。 熱重載 僅適用於偵錯組建。 如需詳細資訊,請參閱 熱重載

對於原生 C++,要進行熱重新載入,需要使用 /INCREMENTAL 選項。 如需有關 C++ 功能需求的詳細資訊,請參閱此 部落格文章Edit and Continue (C++)

注意

如果 IntelliTrace 已啟用,並且您收集了 IntelliTrace 事件和呼叫詳細資料,則熱重新載入會被停用。 如需詳細資訊,請參閱 IntelliTrace

編輯後繼續是節省時間的功能,可讓您在程式處於中斷模式時變更原始程式碼。 當您選擇執行命令以繼續執行程式時,例如 繼續步驟,[編輯後繼續] 會自動套用程式代碼變更,但有一些限制。 這可讓您在偵錯會話期間變更程序代碼,而不必停止、重新編譯整個程序,然後重新啟動偵錯會話。

您可以在設計時間停用或啟用 [Visual Studio 選項] 對話框中的 [編輯後繼續]。 [編輯後繼續] 僅適用於偵錯組建。 如需詳細資訊,請參閱 編輯後繼續

針對原生C++,編輯後繼續 需要使用 /INCREMENTAL 選項。 如需有關 C++ 功能需求的詳細資訊,請參閱此 部落格文章Edit and Continue (C++)

注意

如果已啟用 IntelliTrace,而且您同時收集 IntelliTrace 事件和呼叫資訊,則會停用 "Edit and Continue" 功能。 如需詳細資訊,請參閱 IntelliTrace

啟用和設定熱重載

您可以從熱重新載入下拉式按鈕中選取設定來設定熱重新載入。

設定熱重載的螢幕快照。

或者,開啟 [工具>選項] 窗格,並調整 [ 所有設定>偵錯>.NET/C++ 熱重新載入 ] 區段中的選項。 有下列選項可供使用:

  • 啟用熱重新載入:當您的應用程式在附加偵錯工具的情況下執行時,請搭配 .NET 和 C++ 程式碼使用熱重新載入功能 (F5)。

  • 繼續時自動套用變更 (僅限原生):Visual Studio 會自動編譯並套用您在從中斷狀態繼續程式時所做的任何未完成程式碼變更。 如果未選取,您可以選擇使用 [偵錯] 功能表下的 [套用程式碼變更] 項目來套用變更。

  • 警告過時程式代碼(僅限原生):獲得過時程式代碼的相關警告。

  • 不偵錯時啟用:當您的應用程式在未附加偵錯工具的情況下執行時啟用熱重新載入 (Ctrl + F5)。

  • 儲存檔案時套用:儲存檔案時套用變更。

  • 記錄詳細程度:設定啟用熱重新載入時的記錄層級:最小詳細、或診斷

Visual Studio 中 .NET C++ 熱重新載入設定的螢幕擷取畫面。

或者,開啟 [工具>選項] 對話方塊,並調整 [偵錯>.NET/C++ 熱重新載入 ] 區段中的選項。 有下列選項可供使用:

  • 啟用熱重新載入:在連接偵錯工具 (F5) 的情況下啟動時啟用熱重新載入。

  • 啟用熱重新載入:在未附加偵錯工具的情況下啟動時啟用熱重新載入(Ctrl+F5)。

  • 檔案儲存時套用即時重新載入:當您儲存檔案時,將套用程式碼的變更。

  • 記錄詳細程度:過濾「熱重新載入輸出」視窗中顯示的資訊量。

.NET 熱重載設定的螢幕快照。

針對 C++,您可以開啟「工具」>「選項」「>偵錯>一般」來設定額外選項。 請確定已選取 [啟用熱重載],並設定其他選項:

  • 繼續時套用變更 (僅限原生):Visual Studio 會自動編譯並套用您在從中斷狀態繼續程式時所做的任何未完成程式碼變更。 如果未選取,您可以選擇使用 [偵錯] 功能表下的 [套用程式碼變更] 項目來套用變更。

  • 警告過時程式代碼(僅限原生):獲得過時程式代碼的相關警告。

針對 .NET 熱重載,您也可以修改 .NET 6+ 專案的 launchSetting.json 檔案,並將 hotReloadEnabled 設定為 false,來控制專案層級的熱重載是否可供使用。

例:

{
  "profiles": {
    "Console": {
      "commandName": "Project",
      "hotReloadEnabled": false
    }
  }
}

啟用或停用"編輯後繼續"功能

  1. 如果您是在偵錯會話中,請停止偵錯(偵錯>停止偵錯Shift+F5)。

  2. 在 [工具]>[選項>] 或 [偵錯>選項] >[偵錯>一般] 中,在右窗格中選取 [編輯後繼續 ]

    注意

    如果已啟用 IntelliTrace,而且您同時收集 IntelliTrace 事件和呼叫資訊,則會停用 "Edit and Continue" 功能。 如需詳細資訊,請參閱 IntelliTrace

  3. 針對C++程序代碼,請確定已選取 [啟用原生編輯後繼續],並設定其他選項:

    • 繼續時套用變更 (僅限原生):Visual Studio 會自動編譯並套用您在從中斷狀態繼續程式時所做的任何未完成程式碼變更。 如果未選取,您可以選擇使用 [偵錯] 功能表下的 [套用程式碼變更] 項目來套用變更。

    • 警告過時程式代碼(僅限原生):獲得過時程式代碼的相關警告。

  4. 選取 [確定]

設定自動重新啟動

熱重新載入可以在進行不支援的變更 (也稱為粗魯編輯) 時自動重新啟動應用程式的進程,而不是結束整個偵錯會話。 若要啟用此功能,請編輯專案檔以新增下列屬性宣告。

<PropertyGroup>
  <HotReloadAutoRestart>true</HotReloadAutoRestart>
</PropertyGroup>

您也可以在 Directory.Build.props 檔案中設定此屬性。 自動重新啟動適用於可快速重新啟動程序的專案類型 (例如,某些 Aspire 或 Web 專案),因此您可以繼續偵錯,並將中斷降至最低。

這是程序型的重新啟動。 例如,如果您要偵錯數個專案,則只會重建並重新啟動已變更的專案,以及任何相依專案。

設定 Razor 的即時重新載入

藉由在 Roslyn 進程內共同裝載 Razor 編譯器,在熱重新載入期間編輯 .razor 檔案會更快、更有效率。 Cohosting 也提高了使用熱重新載入時的整體可靠性。

若要啟用共同代管,請選取 工具>選項,然後搜尋 cohost。 選取或取消選取 [ 將 Roslyn 共同主機伺服器用於 Razor (需要重新啟動) ] 設定。 如果您啟用此選項,請重新啟動 Visual Studio。 預設會啟用協同代管。

停止程式代碼變更

當 Hot Reload 進行程式碼變更時,您可以中止這個過程。

當 [編輯後繼續] 正在套用程式代碼變更時,您可以停止作業。

謹慎

停止受管理的代碼中的變更可能會產生非預期的結果。 將變更套用至 Managed 程式碼通常是一個快速的過程,因此很少需要停止對 Managed 程式碼的變更。

若要停止套用程式代碼變更:

  • 從 [偵錯] 功能表中,選擇 [停止套用程式代碼變更]

    只有在套用程式代碼變更時,才會顯示此功能表項。

    如果您選擇此選項,則不會認可任何程式碼變更。