支援的程式碼變更 (C#)
[編輯後繼續] 會處理方法主體內大多數程式碼的變更。 但是在偵錯期間,無法套用方法主體外的變更和方法主體內的某些變更。 若要套用這些不支援的變更,您必須停止偵錯,然後使用新版程式碼重新啟動偵錯。
偵錯工作階段期間不能將下列變更套用至 C# 程式碼:
變更目前的陳述式或任何其他使用中陳述式。
使用中陳述式包含了在呼叫堆疊的函式中,為了取得目前陳述式而呼叫的任何陳述式。
目前的陳述式在來源視窗中會以黃色背景標示。 其他使用中陳述式會以灰色背景標示,而且是唯讀的。 這些預設色彩可以在 [選項] 對話方塊中進行變更。
全域符號的變更,包括下列各項:
加入新類型。
將方法加入至類型。
變更類型的簽章。
將欄位、事件或屬性加入至類型。
編輯匿名方法,或編輯包含匿名方法的任何方法。 這些方法會以灰色背景標示。
加入新的匿名方法。
加入、移除或變更屬性。
加入、移除或變更 using 指示詞。
移除或變更區域變數。 可以加入區域變數。
在使用中陳述式前後加入 foreach、using 或 lock。
修改包含 yield return 或 yield break 陳述式的方法。
變更具有以匿名方法初始化之欄位的建構函式。
Unsafe 程式碼
變更 Unsafe 程式碼的限制與變更 Safe 程式碼的限制相同,但前者多了下列這一項額外限制:
- [編輯後繼續] 不支援對包含 stackalloc 運算子之方法內的 Unsafe 程式碼進行變更。 這項限制只適用於使用中方法。 當您進行偵錯時,目前位於呼叫堆疊上的任何函式都是使用中陳述式。
例外狀況
[編輯後繼續] 支援變更 catch、finally、 和 try 區塊,但是對於使用中方法內的區塊有一些例外狀況,例如目前位於呼叫堆疊上的方法。
如果使用中函式是呼叫堆疊上最新的函式,則在這個函式中,[編輯後繼續] 不支援:
在使用中陳述式前後加入 catch 或 finally 區塊。
加入巢狀層次大於六的巢狀例外狀況處理常式。
如果使用中函式不是呼叫堆疊上最新的函式,則在這個函式中,[編輯後繼續] 不支援:
在使用中陳述式前後加入 catch、finally 或 try 區塊。
加入巢狀層次大於六的巢狀例外狀況處理常式。
變更包含使用中陳述式之 try 區塊內的程式碼。
不支援的案例
[編輯後繼續] 無法用於下列偵錯案例中:
偵錯 LINQ 程式碼。 如需詳細資訊,請參閱偵錯 LINQ。
混合模式 (原生/Managed) 偵錯。
SQL 偵錯
偵錯 Dr. Watson 傾印。
在未選取 [發生未處理的例外狀況時回溯呼叫堆疊] 選項的情況下,於發生未處理的例外狀況後編輯程式碼。
偵錯內嵌的執行階段應用程式。
對具有 [附加至] 的應用程式進行偵錯,而不是從 [偵錯] 功能表選擇 [啟動] 執行應用程式。
偵錯最佳化程式碼
由於建置錯誤以致新版本建置失敗之後,對舊版程式碼進行偵錯。