【问题标题】:In VS2015, how do I disable Step Into for auto-implemented properties?在 VS2015 中,如何为自动实现的属性禁用 Step Into?
【发布时间】:2016-08-19 14:10:55
【问题描述】:

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

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

public int MyProperty { get; set; }

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

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

{
    DoSomeStuff(MyProperty);
}

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

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

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

(我注意到调试选项中的“跳过属性和运算符”复选框,但我不想跳过所有属性获取器/设置器,只是那些用于自动实现的属性。)

【问题讨论】:

  • 通常情况下,最好几乎一直Step over properties,并且只有在您真正需要调试特定属性代码时才介入。上下文菜单有许多与步进相关的选项。
  • 在 Visual Studio 开发者社区中对此问题进行投票。 developercommunity.visualstudio.com/t/…

标签: c# debugging visual-studio-2015 visual-studio-debugging


【解决方案1】:

转到 VS2015 选项 -> 调试 -> 常规并勾选“跳过属性和运算符”。

【讨论】:

  • 我已经编辑了我的答案,告诉你如何改变一般行为。
  • 我已将此标记为答案,尽管它有点核心:不仅阻止自动实现的属性,而且阻止 所有 属性的 Step Into。非常烦人的是没有办法阻止一个而不是另一个,特别是因为这是早期 VS 版本的行为变化。
【解决方案2】:

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

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

【讨论】:

  • 这仅适用于类。 @Kinetic 的回答对于跳过属性设置器是正确的。
【解决方案3】:

在 Visual Studio 2017 中:

在方法调用的那一行暂停调试器 -> 右键单击​​方法 -> 单步执行 -> [从列表中选择您的方法]。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-20
    • 1970-01-01
    • 2010-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    相关资源
    最近更新 更多