条件断点在Visual Studio 2015中不起作用

贡萨洛-

我在Visual Studio 2015中调试C#代码时遇到问题。

我想在断点中添加一个简单的表达式,

所以我添加hierarchyRelation != null为条件。那是我正在调试的方法的局部变量,它存在。

但是,在运行时出现以下错误

“断点的条件无法执行。条件是“ hierarchyRelation!= null”。返回的错误是“断点条件必须评估为布尔运算”。单击“确定”以在此断点处停止。

实际上,条件更为复杂,但这是重现该问题的最简单的情况。我尝试了变体,甚至比较了此变量的属性,但总是失败。

如果我尝试一个恒定的条件,喜欢1 != 21 = 1它工作正常。有什么问题吗?我发现的最接近的相关问题是这个,但确实存在vb code解决方案是直接在代码中添加调试方法。尽管我可以做到,但是我想知道为什么这不起作用。

方法代码

private HierarchyNodeDto GetNodeTreeThatContainsText<TRollup, TLeaf, THierarchyRelation>(HierarchyNodeDto root, string text, PreFilter preFilter, Func<TLeaf, bool> leafContainsTextFunc, bool parentContainsText) where TRollup: HierarchyNodeDto where TLeaf: HierarchyNodeDto {
            dynamic rootNode = root as TRollup;
            if (rootNode != null) {
                if (rootNode.Nodes == null) {
                    return null;
                }
                var childNodesWithText = new List<THierarchyRelation>();
                foreach (var hierarchyRelation in rootNode.Nodes) {
                    var isLeaf = hierarchyRelation.Node.GetType() == typeof(TransactionTypeHierarchyLeafDto) || hierarchyRelation.Node.GetType() == typeof(AccountHierarchyLeafDto);
                    if (!isLeaf && hierarchyRelation.Node.Name != null && hierarchyRelation.Node.Name.ToLower().Contains(text) && preFilter != PreFilter.Leafs) {
                        childNodesWithText.Add(hierarchyRelation);
                        continue;
                    }
                    var subtreeThatContainsText = this.GetNodeTreeThatContainsText<TRollup, TLeaf, THierarchyRelation>(hierarchyRelation.Node, text, preFilter, leafContainsTextFunc, rootNode.Name.ToLower().Contains(text));
                    if (subtreeThatContainsText == null) {
                        continue;
                    }
                    hierarchyRelation.Node = subtreeThatContainsText;
                    childNodesWithText.Add(hierarchyRelation);
                }
                rootNode.Nodes = childNodesWithText;
                if (rootNode.Nodes.Count > 0 || (rootNode.Name.ToLower().Contains(text) && preFilter != PreFilter.Leafs)) {
                    return rootNode;
                }
                return null;
            }
            var rootLeaf = root as TLeaf;

            return rootLeaf != null && ((leafContainsTextFunc.Invoke(rootLeaf) && preFilter != PreFilter.Nodes) || (parentContainsText && preFilter != PreFilter.Leafs)) ? rootLeaf : null;
        }

我在其中的第一行添加断点 foreach

在此处输入图片说明

耶夫格尼·格特森

问题是,hierarchyRelation尽管我不确定为什么,但它是一个动态变量。根据调试器中的表达式,它应该可以工作(我找不到为什么不应该的原因)。

    static void Main(string[] args)
    {
        dynamic foo = new Foo();

        // conditional breakpoint 'foo.Nodes == null' here
    }

    internal class Foo
    {
        public IEnumerable<Foo> Nodes = null;
    }

每当调试器通过并评估条件断点时,此代码都会触发相同的异常。静态键入foo变量将使调试器能够评估表达式并在需要时中断。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

切换断点在Visual Studio Code中不起作用

Javascript断点在Visual Studio 2019 asp.net应用程序中不起作用

参考在Visual Studio 2015中不起作用

布局在 Visual Studio 2015 中不起作用?

JavaScript Intellisense在Visual Studio 2015中不起作用

调试模式在Visual Studio 2015中不起作用

Visual Studio Code中的条件断点

Visual Studio 2012中的条件断点

浏览器链接在Visual Studio 2015社区中不起作用

TypeScript“保存时编译”功能在Visual Studio 2015中不起作用

“删除不必要的用法”在Visual Studio 2015中不起作用

Visual Studio 2015调试在多线程应用程序中不起作用

Visual Studio 2015中的浏览器链接-不起作用/没有禁用?

Visual Studio 2015双击状态栏中的行号不起作用

Visual Studio 2015(更新2)中的XAML编辑并继续似乎不起作用

folderbrowserdialog1 在 Visual Studio 2015 Enterprise Windows 10 中不起作用

Resharper Ctrl单击不起作用Visual Studio 2015

编辑并继续不起作用(C ++,Visual Studio Community 2015)

Visual Studio 2015-保存窗口布局-不起作用

Visual Studio 2015:Web Essentials功能均不起作用

PostSharp在Visual Studio 2015上不起作用

Greenshot在Visual Studio中不起作用

在条件断点中使用Linq的Visual Studio 2015

Visual Studio 2015中的Azure Web作业-部署不起作用,错误为“项目中不存在目标“ MSDeployPublish”。

如何在Visual Studio中设置条件断点?

条件编译似乎在Xamarin Studio中不起作用

在Visual Studio 2017中,“使干净”的任务配置不起作用

Javascript 导入在 Visual Studio 代码中不起作用

Intellisense在Visual Studio Code中不起作用-mssql扩展