防止DebuggerStepThroughAttribute应用于我的非xsd生成的分部类?

我使用xsd.exe工具根据我的xml架构生成一个类。 它使用DebuggerStepThroughAttribute创建了一个公共部分类。 好吧,我为这个类创建了另一个部分类文件来编写我的自定义代码,并且希望能够逐步进入我编写的代码,但看起来调试器也将步进属性应用于我的部分类。 我是否有一种简单的方法可以逐步进入我的代码,而无需在每次重新生成分部类时手动删除属性?

  1. 您可以使调试器在Tools-> Options-> Debugger-> General下忽略此属性。 取消选中“仅启用我的代码(仅管理)”。
  2. 您也可以使用partial类作为另一个类/方法的包装器。 分部类中的方法只是调用新类中实际方法的存根。 调试器将跳过使用该属性修饰的方法,但仍允许您逐步执行它们包装的类。 以下示例……

//

[DebuggerStepThrough] static void DebuggerStepThroughInPartialClass() { WrappedClass.NonDebuggerStepThrough(); } class WrappedClass{ static void NonDebuggerStepThroughInNewClass() { int bar = 0; bar++; } } 

最好的方法是从生成的代码中删除属性行。 最简单的方法是IMHO在命令窗口中使用别名。

例:

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#不应太难。