2017-03-17 58 views
2

在条件断点内是否可以使用Linq?在条件断点处使用Linq的Visual Studio 2015

我试图打破在下列条件为真:

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 

不过,我非常不喜欢更改代码放置一个调试器。

+0

不喜欢条件断点,它减慢了执行几次 –

+1

刚刚验证 - linq适用于条件断点 –

+0

我认为我的问题可能与在调试选项中未启用“使用托管兼容模式”有关。启用此设置可使断点按预期工作 –

回答

1

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

一旦选中此选项,断点就按预期执行。

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