“使用Visual Studio调试lambda表达式”不再有效吗?

时间:2019-04-17 10:34:04

标签: c# .net visual-studio visual-studio-2015 visual-studio-2019

在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)。然后是错误。

3 个答案:

答案 0 :(得分:0)

这显然是由于Microsoft引入的新调试引擎中缺少功能所致。按照this link的指示,我开始工作了。该说明可归结为:

  1. 从“工具”菜单中打开“选项”。
  2. 在左侧选择“调试”,“常规”。
  3. 一直向下滚动以选中“使用 托管的兼容模式”。

答案 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

立即窗口是检查变量、运行表达式并有助于加快调试速度的游乐场。