在 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。团队会认真审核您的要求,希望给您满意的答复。
我目前正在将 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。团队会认真审核您的要求,希望给您满意的答复。