2009-07-08 23 views
17

我使用xsd.exe工具根據我的xml模式生成一個類。它使用DebuggerStepThroughAttribute創建了一個公共部分類。好吧,我爲這個類創建了另一個部分類文件來編寫我的自定義代碼,並希望能夠插入我編寫的代碼中,但似乎調試器將step-through屬性應用於部分類my好。是否有一種簡單的方法可以讓我在每次重新生成部分類時都無需手動刪除屬性即可進入我的代碼?阻止DebuggerStepThroughAttribute應用於我的非xsd生成的部分類?

回答

11
  1. 您可以在工具 - >選項 - >調試器 - >常規下使調試器忽略該屬性。取消選中「啓用我的代碼(僅管理)」。
  2. 您也可以使用partial類作爲另一個類/方法的包裝。部分類中的方法僅僅是調用新類中實際方法的存根。調試器將跳過用該屬性修飾的方法,但仍然允許您遍歷它們所包裝的類。下面的實施例...

//

[DebuggerStepThrough] 
static void DebuggerStepThroughInPartialClass() 
{ 
    WrappedClass.NonDebuggerStepThrough(); 
} 

class WrappedClass{ 
    static void NonDebuggerStepThroughInNewClass() 
    { 
     int bar = 0; 
     bar++; 
    } 
} 
+0

我希望有一些屬性,我可以把我的分部類,這將允許我步入它,但我想這不是一個選項。我可能會在每次需要生成它時手動從生成的類中移除該屬性,這可能不會太頻繁。感謝您的迴應! – Lyndal 2009-07-09 14:55:05

0

最好的辦法是簡單地從所產生的代碼中刪除屬性行。 恕我直言,在命令窗口中使用別名最簡單的方法。

例如:

1)打開命令窗口(CTRL + A)

2)式中:(VB版本)

alias removenodebug Edit.Replace "(?([^\r\n])\s)*System.Diagnostics.DebuggerStepThroughAttribute\(\),\s*_\r\n(?([^\r\n])\s)*" "" /d /regex /all 

3)現在你有一個別名找到&替換當前文檔上的那些行。 你可以簡單地鍵入命令窗口:

removenodebug 

和屬性線條消失。

注意:此示例中使用的正則表達式適用於VB代碼,但對於C#轉換應該不會太難。