"Debugging lambda expressions with Visual Studio"不再工作了?



在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的调试对象的状态"。

此功能是否已删除?

 
示例:我正在使用包含IQueryable的变量"tags"调试代码。我想检查每个项目的Name属性,所以在"即时窗口"或"监视"窗口中,我写:tags.Select(t => t.Name) 。然后是错误。

这更像是一个没有背景的临时答案,直到有知识的人出现。

如果在 IQueryable 上调用 ToArray,则可以在调试中使用 lambda。不过,它不适用于AsEnumerable结果,因此它似乎不仅仅是使用IEnumerable方法与 IQueryable方法。

或者,您可以使用"即时"窗口来浏览该值。考虑这里的简单代码:

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

即时窗口是检查变量、运行表达式并帮助更快地调试的游乐场。

显然,这是由于Microsoft引入的新调试引擎中缺少功能引起的。按照此链接中的说明,我开始工作。说明归结为:

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

最新更新