DebuggerStepThrough属性允许您跳过进入某些方法/类/属性的步骤。
在DebuggerStepThrough being ignored澄清了 c# 编译器不会将此属性继承到编译器生成的 IEnumerable<T>
执行。
这种失败的一个简单例子是:
static void Main(string[] args)
{
var a = SkipMe().ToList();
}
[System.Diagnostics.DebuggerStepThrough]
static IEnumerable<int> SkipMe()
{
// comment out line below and the throw will be stepped over.
yield return 1;
throw new Exception();
}
有没有办法让 C# 编译器添加 DebuggerStepThrough
自动生成类型的属性?
有没有办法让 visual studio 使用 [CompilerGenerated]
跳过对任何类型的调试?属性?
--
附录:一些说明性的截图
按 F5 后的结果
Visual Studio 版本:
我们缺少的属性:
最佳答案
我不认为有一种方法可以实现您正在寻找的效果。
- 无法让 C# 编译器将此属性复制到生成状态机方法中。
- 您无法通过将
DebuggerStepThrough
添加到包含迭代器方法的类来解决这个问题。调试器只查看直接父类型,而不查看包含嵌套类型的类型。
我能想到的实现此目的的唯一真正方法是将所有您不想调试的代码放入单独的 DLL 中。然后不要为那个特定的 DLL 加载 PDB。
关于c# - DebuggerStepThrough 是否可以继承到自动生成的 IEnumerable 实现中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8751814/