C# &引用;使用Visual Studio调试lambda表达式;不再工作了?

C# &引用;使用Visual Studio调试lambda表达式;不再工作了?,c#,.net,visual-studio,visual-studio-2015,visual-studio-2019,C#,.net,Visual Studio,Visual Studio 2015,Visual Studio 2019,在Visual Studio 2015中,引入了对调试lambda表达式的支持: 然而,我从未能在Visual Studio 2017或新的Visual Studio 2019中实现这一点 2019年,我得到:“错误:检查System.Reflection.PropertyInfo类型的调试对象的状态在此上下文中不受支持” 这个功能被删除了吗 示例:我正在调试带有变量“tags”的代码,该变量包含IQueryable。我想检查每个项目的Name属性,因此在即时窗口或监视窗口中我写:tags。选

在Visual Studio 2015中,引入了对调试lambda表达式的支持:

然而,我从未能在Visual Studio 2017或新的Visual Studio 2019中实现这一点

2019年,我得到:“错误:检查System.Reflection.PropertyInfo类型的调试对象的状态在此上下文中不受支持”

这个功能被删除了吗



示例:我正在调试带有变量“tags”的代码,该变量包含
IQueryable
。我想检查每个项目的
Name
属性,因此在即时窗口或监视窗口中我写:
tags。选择(t=>t.Name)
。然后是错误。

这显然是由于Microsoft引入的新调试引擎中缺少一项功能造成的。按照我的指示,我有事情要做。这些说明归结为:

  • 从“工具”菜单打开“选项”
  • 在左侧选择“调试”、“常规”
  • 一直向下滚动以选中“使用” 托管兼容模式”

  • 在有知识的人出现之前,这更多的是一个没有背景的临时回答


    如果在
    IQueryable
    上调用
    ToArray
    ,则可以使用lambdas对其进行调试。但是,它对
    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)
    
    按enter键,您将看到以下结果:

    Count = 4
        [0]: 100
        [1]: 400
        [2]: 900
        [3]: 1600
    

    即时窗口是检查变量、运行表达式和帮助更快调试的平台。

    您能添加一个简单的示例吗?@stuart:为了方便您添加。请展示一些data@Protectorone如果您尝试使用
    IEnumerable
    而不是
    IQueryable
    ,是否有效?@AderbalFarias:有趣!它确实适用于本机
    IEnumerable
    !但是,它不适用于IQueryable
    AsEnumerable()
    ,但它将适用于
    ToArray
    !我也读过,但这是关于2013年的!我希望2015年的功能在2019年发挥作用!2019年没有“使用托管兼容性模式”这样的选项