问题
通常,Visual Studio的“动态视图”显示对象的成员。有时,该对象需要运行所有线程,您必须手动允许才能看到成员。但是,使用此COM对象时,我在尝试查看成员时遇到错误:
无法计算表达式。不支持该操作。未知错误: 0x80070057。
详细信息
以下是该过程的屏幕截图:
函数求值要求运行所有线程。
无法计算表达式。不支持该操作。未知错误:0x80070057。
我尝试过的
除了对这两个错误消息的无果而终的研究之外,我唯一尝试过的就是删除.suo文件并重新启动Visual Studio。
我知道API调用返回什么数据,因为我能够将数据打印到控制台。然而,不能从调试器中查看这些数据确实减慢了我的速度。任何帮助都将不胜感激。谢谢!
发布于 2018-06-13 05:42:09
以下来自Hans Passant的this question评论帮助我找到了解决方案:
通常可以将其强制转换为组件支持的接口类型之一。然后调试器又变得智能了.使用foreach迭代它。实际的基础运行时类型是代理,当您从工作线程调用方法或它是进程外服务器时,就会发生这种情况。
解决方案是先迭代COM对象,然后再尝试使用它。因此,如果COM对象是一个集合,则循环访问项,强制转换为接口类型,并将结果存储在var
或自定义模型中。
如下所示:
var myObject = com.GetStuff().OfType<InterfaceClass>().Select(s => new { Name = s.Name, Description = s.Description });
发布于 2019-02-02 01:23:35
在我的示例中,通过启用“使用托管兼容模式”选项,可以在调试器中查看com对象类型。
在visual studio中,如果打开“工具”、“常规选项”,然后调试“>>常规”,请确保选中了“使用托管兼容模式”选项。
这应将com对象显示为其在调试器中的正确类型。
https://stackoverflow.com/questions/50823789
复制相似问题