在System.Type上使用条件断点时出错这是函数:BuildFieldAttributes();BuildDataColumns(FieldAttributes);我在第一行设置了一个断点(this.Type=Type),当Type.FullName=="Malt.Organisation"时我想要Type.FullName=="Malt.Organisation"。Organization",这就是我输入的条件。但是,当命中该行时,会显示以下错误:无法执行断点的条件。条件是'Type.FullName=="Malt.Organisation"'。该返回的错误是“在此上下文中不支持检查类型为System.Type的调试对象中的对象的状态。”我做错了什么(显然)?PS。解决方案是将其添加到代码中:if(Type.FullName=="Malt.Organisation")System.Diagnostics.Debugger.Break();在我的例子中,我使用VisualStudio2013、NUnit2.6.4,并将调试器附加到单元测试会话,我收到一条消息:无法执行断点的条件。条件为“type.Name.Contains("FooBar")”。返回的错误为“在此上下文中不支持检查System.Type类型的调试对象中对象的状态”。'。单击确定以在此断点处停止。这是由Microsoft引入的新调试引擎中缺少功能引起的。按照这篇msdn博客文章中的说明,我得到了一些工作。说明归结为:从“工具”菜单中打开“选项”选择左侧的“调试”、“常规”一直向下滚动以选中“使用托管兼容模式”这应该切换到旧版调试引擎,在我的例子中以下允许使用表达式断点条件的类型。请注意,显然您需要重新启动应用程序或调试会话。免责声明:我不知道检查这个选项还有什么其他影响。就个人而言,当我完成需要它的任务时我会关闭它......你说Type.FullName=="Malt.Organisation"导致它坏了,你试过this.Type.FullName=="Malt.Organisation“?this.Type.FullName=="Malt.Organisation"?另一种可能性是,调试器是否认为您正在尝试使用名为Type的变量调用静态方法,就像它的类名一样?将Type变量重命名为其他名称是否修复了它?我遇到了这个,但是在Web应用程序中测试IsInterface时。我只是因为没有在调试器中启用额外功能而作弊。boolblnIsInterface=tType.IsInterface;//Insertbreakpointhere...if(blnIsInterface){...}所以在你的情况下你可以做一些像publicvoidInit(System.TypeType){boolblnBreak=Type.FullName=="Malt.Organisation";//插入blnBreak的断点==truethis.Type=Type;BuildFieldAttributes();BuildDataColumns(FieldAttributes);这有点麻烦,但至少您不必担心性能下降,并且启用此机器代码调试在Web应用程序中似乎不是一个选项。我不确定此处描述的“使用托管兼容模式”解决方案-对我没有帮助,但在我自己的情况下,项目>属性>调试>启用本机代码调试-必须取消选中。为什么-目前没有线索。使用.net4.5、vs2015、控制台应用程序。以上就是《C#学习教程:在System上使用条件断点时出错》的全部内容。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
