首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >VS2017调试:无法访问COM对象的成员

VS2017调试:无法访问COM对象的成员
EN

Stack Overflow用户
提问于 2018-06-13 02:41:44
回答 2查看 603关注 0票数 2

问题

通常,Visual Studio的“动态视图”显示对象的成员。有时,该对象需要运行所有线程,您必须手动允许才能看到成员。但是,使用此COM对象时,我在尝试查看成员时遇到错误:

无法计算表达式。不支持该操作。未知错误: 0x80070057。

详细信息

以下是该过程的屏幕截图:

  1. 查看COM对象:

  1. 查看COM对象的成员:

  1. 打开动态视图会导致:

函数求值要求运行所有线程。

  1. 当我单击刷新图标时,错误发生变化:

无法计算表达式。不支持该操作。未知错误:0x80070057。

我尝试过的

除了对这两个错误消息的无果而终的研究之外,我唯一尝试过的就是删除.suo文件并重新启动Visual Studio。

我知道API调用返回什么数据,因为我能够将数据打印到控制台。然而,不能从调试器中查看这些数据确实减慢了我的速度。任何帮助都将不胜感激。谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-13 05:42:09

以下来自Hans Passant的this question评论帮助我找到了解决方案:

通常可以将其强制转换为组件支持的接口类型之一。然后调试器又变得智能了.使用foreach迭代它。实际的基础运行时类型是代理,当您从工作线程调用方法或它是进程外服务器时,就会发生这种情况。

解决方案是先迭代COM对象,然后再尝试使用它。因此,如果COM对象是一个集合,则循环访问项,强制转换为接口类型,并将结果存储在var或自定义模型中。

如下所示:

代码语言:javascript
复制
var myObject = com.GetStuff().OfType<InterfaceClass>().Select(s => new { Name = s.Name, Description = s.Description });
票数 0
EN

Stack Overflow用户

发布于 2019-02-02 01:23:35

在我的示例中,通过启用“使用托管兼容模式”选项,可以在调试器中查看com对象类型。

在visual studio中,如果打开“工具”、“常规选项”,然后调试“>>常规”,请确保选中了“使用托管兼容模式”选项。

这应将com对象显示为其在调试器中的正确类型。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50823789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档