在Visual Studio 2015中,引入了对调试lambda表达式的支持:https://devblogs.microsoft.com/devops/support-for-debugging-lambda-expressions-with-visual-studio-2015/
但是,我从来没有能够在Visual Studio 2017和新的Visual Studio 2019中使用它。
在2019年,我得到:“错误:在此上下文中不支持检查类型为System.Reflection.PropertyInfo的调试对象中对象的状态。”
此功能是否已删除?
示例:我正在调试包含变量{tags“的代码,该变量包含IQueryable
。我想检查每个项目的Name
属性,因此在“立即窗口”或“监视”窗口中输入:tags.Select(t => t.Name)
。然后是错误。
答案 0 :(得分:0)
这显然是由于Microsoft引入的新调试引擎中缺少功能所致。按照this link的指示,我开始工作了。该说明可归结为:
答案 1 :(得分:0)
这更多是没有背景的临时答案,直到有知识的人出现为止。
如果您在ToArray
上调用IQueryable
,则可以在其上使用lambda进行调试。不过,它在AsEnumerable
上不起作用,因此它似乎不仅仅与是否将数据存储在内存中有关。
答案 2 :(得分:0)
作为替代方案,您可以使用立即窗口来探索价值。考虑这里的简单代码:
static void Main(string[] args)
{
int[] Numbers = { 10, 20, 30, 40 };
var NewNumbers = Numbers.Select(x => x * x);
}
在 lambda 表达式所在的位置放置一个调试点,然后打开调试 -> 窗口 -> 立即。
在立即窗口中,您可以编写要测试的表达式并查看结果。我输入:
Numbers.Select(x => x*x)
按回车,你会看到如下结果:
Count = 4
[0]: 100
[1]: 400
[2]: 900
[3]: 1600
立即窗口是检查变量、运行表达式并有助于加快调试速度的游乐场。