在 VS 2017 调试器中检查 COM 对象

Inspecting COM objects in VS 2017 debugger

我目前正在将 VBA powerpoint 加载项迁移到 VSTO。

几个星期以来,我一直在为 COM 对象的 Visual studio 调试而苦苦挣扎。正如您在下图中所看到的,对象类型显示为 {system._ComObject} 并且对象检查成为一个挑战,因为必须使用动态视图,这在我看来非常不方便。

Debugging COM objects

环顾四周,我发现了在一般调试设置中激活选项“使用托管代码兼容模式”的建议,正如您在 Debugging setting 上看到的那样 我还遵循了另一项建议,将我所有办公室相关引用的 属性“嵌入互操作类型”设置为 false。

应用这些更改后。瞧!检查开始工作,正如我希望的那样,正如您在此处看到的那样:Debug working properly

我几乎在天堂。我的狂喜一直持续到我试图在调试期间更改一些代码并被 visual studio 告知 “托管兼容模式不支持编辑并继续”。

现在我又回到地狱了。通过编辑并继续,我错过了一个体面的 COM 对象检查。通过 COM 检查,我无法在调试期间更改代码。

这种情况看起来很尴尬,我对 VS 2017 有更多期待。

有谁知道我怎样才能同时进行适当的 COM 检查和编辑并继续?

Does anybody know how can I get decent COM inspection and edit and continue at the same time?

恐怕你得不到你想要的

因为 你只是调试一个 com 对象,它更像是优化的、混合的或 SQL 服务器公共语言运行时 (CLR) 集成代码(使用),如the official document 表示,编辑并继续 功能不支持。

通常,要在 VS 中调试那些混合代码,您应该启用 使用托管兼容模式启用本机code debugging,但是这些选项不能像官方文档所说的那样与 Edit and Continue 一起工作。

您可以查看 this document 了解不支持的更改或支持的代码更改。

因此对于您的问题,没有同时使用它们的选项。

作为建议,您应该先中断调试过程,对您的代码进行一些更改。然后启动 Debugging 以调试新的更改。

此外,如果你还想要这个功能,你可以suggest a feature on our User Voice Forum。团队会认真审核您的要求,希望给您满意的答复。