共用方式為


支援的程式碼變更 (C#)

[編輯後繼續] 會處理方法主體內的大多數程式碼變更。但是在偵錯期間,無法套用方法主體外的變更和方法主體內的某些變更。若要套用這些不支援的變更,您必須停止偵錯,然後使用新版程式碼重新啟動偵錯。

偵錯工作階段期間不能將下列變更套用至 C#:

  • 變更目前的陳述式或任何其他使用中陳述式。

    在呼叫堆疊的函式中,使用中陳述式包含了任何陳述式,這些陳述式是被呼叫以取得目前的陳述式。

    目前的陳述式會在來源視窗中以黃色背景標示。其他使用中陳述式會以灰色背景標示,而且是唯讀的。這些預設色彩可以在 [選項] 對話方塊中進行變更。

  • 全域符號的變更包括下列各項:

    • 加入新的型別。

    • 將方法加入至型別。

    • 變更型別的簽章。

    • 將欄位、事件,或屬性加入至型別。

  • 編輯匿名方法,或編輯包含匿名方法的任何方法。這些方法會以灰色背景標示。

  • 加入新的匿名方法。

  • 加入、移除,或變更屬性。

  • 加入、移除或變更 using 指示詞。

  • 移除或變更本機變數。允許加入本機變數。

  • 將 foreach、using 或 lock 加入使用中陳述式前後。

  • 修改包含 yield return 或 yield break 陳述式的方法。

  • 變更具有欄位的建構函式 (Constructor),而這個欄位是以匿名方法進行初始化。

Unsafe 程式碼

除了一些額外的限制之外,變更 Unsafe 程式碼的限制與變更 Safe 程式碼的限制相同:

  • [編輯後繼續] 不支援方法 (包含 stackalloc 運算子) 內不安全的程式碼變更。這只適用於使用中方法。當您進行偵錯時,目前位於呼叫堆疊上的任何函式都是使用中陳述式。

例外狀況

編輯後繼續支援會變為catch, finally,和try區塊中,有一些例外區塊在作用中的方法中,例如目前位於呼叫堆疊的方法。

  • 位於使用中函式,而且這個函式是呼叫堆疊上的最後函式時,則 [編輯後繼續] 不支援:

    • 新增catch或finally使用中陳述式前後的區塊。

    • 加入巢狀層次大於六的巢狀例外狀況處理常式。

  • 位於使用中函式,而且這個函式不是呼叫堆疊上的最後函式時,則 [編輯後繼續] 不支援:

    • 新增catch, finally或try使用中陳述式前後的區塊。

    • 加入巢狀層次大於六的巢狀例外狀況處理常式。

    • 變更程式碼內try包含使用中陳述式區塊。

不支援的案例

[編輯後繼續] 無法用於下列偵錯案例中:

  • 偵錯 LINQ 程式碼。如需詳細資訊,請參閱 Edit and Continue Not Supported for LINQ

  • 混合模式 (原生/Managed) 偵錯。

  • SQL 偵錯

  • 偵錯 Dr.Watson 傾印。

  • 未選取 [發生未處理的例外狀況時回溯呼叫堆疊] 選項,而發生無法控制的例外狀況後編輯程式碼。

  • 偵錯內嵌的執行階段應用程式。

  • 使用 [附加至] 來偵錯應用程式,而不是從 [偵錯] 功能表選擇 [啟動] 來執行應用程式。

  • 偵錯最佳化程式碼

  • 當目標為 64 位元應用程式時,偵錯 Managed 程式碼。如果要使用 [編輯後繼續],就必須將目標設定為 x86 (專案屬性編譯 索引標籤上, 進階編譯器設定。)

  • 由於建置錯誤以致新版本建置失敗之後,偵錯舊版的程式碼。

請參閱

工作

HOW TO:使用編輯後繼續 (C#)

參考

編輯後繼續 (Visual C#)

編輯後繼續的錯誤和警告 (C#)