【问题标题】:Visual Studio 2015 using Linq in conditional breakpointVisual Studio 2015 在条件断点中使用 Linq
【发布时间】:2017-03-17 10:52:43
【问题描述】:

是否可以在条件断点内使用 Linq?

当以下条件为真时,我试图打破:

parentElement.ChildElements.Any(c => c.Id == 1)

当调试器被点击时,会显示以下错误消息

调试器无法评估此表达式。

如果问题与使用 .Any() 有关,我已尝试以下条件

parentElement.ChildElements.Where(c => c.Id == 1).Count() > 0

这导致显示与上面相同的错误。

我知道以下代码可以解决

#if DEBUG
if(parentElement.ChildElements.Any(c => c.Id == 1))
{
    System.Diagnostics.Debugger.Break();
}
#endif

但是,理想情况下,我不希望通过更改代码来放置调试器。

【问题讨论】:

  • 不喜欢条件断点,它会多次减慢执行速度
  • 刚刚验证 - linq 对于条件断点工作正常
  • 我认为我的问题可能与未在调试选项中启用“使用托管兼容模式”有关。启用此设置允许断点按预期运行

标签: c# linq debugging


【解决方案1】:

此问题是由 Visual Studio 中未启用 Use Managed Compatibility Mode 选项引起的。

选中此选项后,断点将按预期执行。

有关如何在 Visual Studio 中启用此选项,请参阅 this 答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-26
    • 1970-01-01
    • 2011-05-03
    • 1970-01-01
    • 2016-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多