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

发布于 2024-07-26 05:55:07 字数 231 浏览 3 评论 0原文

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

I used the xsd.exe tool to generate a class based on my xml schema. It created a public partial class with DebuggerStepThroughAttribute. Well, I created another partial class file for this class to write my custom code and want to be able to step-into this code I've written but it appears the debugger is applying the step-through attribute to my partial class as well. Is there an easy way for me to step-into my code without manually removing the attribute each time I re-generate the partial class?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

摇划花蜜的午后 2024-08-02 05:55:07
  1. 您可以在“工具”->“选项”->“调试器”->“常规”下使调试器忽略此属性。 取消选中“仅启用我的代码(仅限托管)”。
  2. 您也可以仅使用分部类作为另一个类/方法的包装器。 分部类中的方法只是调用新类中实际方法的存根。 调试器将跳过用属性修饰的方法,但仍然允许您单步执行它们包装的类。 下面的例子...

//

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

class WrappedClass{
   static void NonDebuggerStepThroughInNewClass()
   {
      int bar = 0;
      bar++;
   }
}
  1. You can make the debugger ignore this attribute under Tools->Options->Debugger->General. Uncheck "Enable Just My Code (Managed Only)".
  2. You could also just use the partial class as a wrapper for another class/methods. The methods in the partial class would just be stubs that call the actual methods in the new class. The debugger will skip the method decorated with the attribute but still allow you to step through the class they wrap. Example below...

//

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

class WrappedClass{
   static void NonDebuggerStepThroughInNewClass()
   {
      int bar = 0;
      bar++;
   }
}
对你再特殊 2024-08-02 05:55:07

最好的方法是简单地从生成的代码中删除属性行。
恕我直言,最简单的方法是在命令窗口上使用别名。

示例:

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

Best way is to simply remove the attribute lines from the generated code.
The easiest way IMHO is using an alias on the command window.

example:

1) Open the command window (CTRL+A)

2) type: (VB version)

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

3) now you have an alias to find&replace those lines on the current document.
You can simply type in the command window:

removenodebug

And the attribute lines are gone.

Note: The regular expression used in this example is for VB code, but it shouldn't be too hard to convert for C#.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文