在 VS2015 中,如何为自动实现的属性禁用 Step Into?

In VS2015, how do I disable Step Into for auto-implemented properties?

我刚开始使用 Visual Studio 2015,发现它在调试自动实现的属性时与 VS2012/VS2013 的行为不同。

假设我在 class 中定义了一个 属性:

public int MyProperty { get; set; }

即。一个自动实现的 属性,其中 getter 和 setter 是由编译器有效生成的。

稍后我可能会参考这个 属性,作为方法调用的一部分,例如:

{
    DoSomeStuff(MyProperty);
}

如果我想调试对 DoSomeStuff 的调用并在该行放置一个断点,然后等待它被命中并 F11 进入调用,VS2015 调试器现在进入 getter for MyProperty(在以前的版本中,对于自动实现的属性,它只会忽略 getters 和 setters)。

我找到了一个 blog post,它描述了将断点放在自动 getters 和 setters 上作为一项新功能的能力,我可以看到它在一些案例。但是,就我而言,我对设置断点或单步执行这些方法不感兴趣,特别是因为我们的代码库有许多自动实现的属性并且对它们的访问通常是嵌套的(例如 DoSomeStuff(X.Y.Z))。

简而言之,是否可以在 VS2015 中为自动实现的属性禁用新的 Step Into 行为,如果可以,怎么做?

(我注意到调试选项中有一个 "Step over properties and operators" 复选框,但我不想跳过所有 属性 getters/setters,只是那些自动实现的属性。)

转到 VS2015 选项 -> 调试 -> 常规并勾选 "Step over properties and operators"。

只需将 DebuggerStepThrough 属性添加到您的函数/class..

[DebuggerStepThrough]
public class DontDebugInterceptor : IInterceptor
{
    // do something...
}

2017 年 Visual Studio:

在方法调用行暂停调试器 -> 右键单击​​方法 -> Step Into Specific -> [从列表中选择你的方法]。

这不是一个可靠的配置解决方案,而是每次您想要进入方法并避免属性介入时应该执行的操作。