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

时间:2009-07-08 18:58:45

标签: c# debugging partial-classes xsd.exe

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

2 个答案:

答案 0 :(得分:11)

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

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

答案 1 :(得分:0)

最好的方法是从生成的代码中删除属性行。 最简单的方法是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#应该不会太难。