gpt4 book ai didi

c# - 在 Visual Studio 中调试时,某些对象显示为 System.__ComObject

转载 作者:行者123 更新时间:2023-12-05 04:05:46 26 4
gpt4 key购买 nike

我正在使用 C# 与 SolidWorks 交互。

我使用的是 Visual Studio 2017 最新版本 (15.7.3)。该项目引用了 SolidWorks .tlb 文件,就像文档中所说的那样。在这些引用中,我将“Embed Interop Types”设置为 false,这样我就可以在调试时查看我正在处理的对象的类型,并查看任何公共(public)属性等。

例如,如果我需要一个 FeatureManager,它将显示为 FeatureManagerClass

然而,他们中的一半仍然说 System.__ComObject,例如 SldWorksModelDoc2,即使我可以看到 SldWorksClassModelDoc2Class 在对象浏览器中。

当我在项目上运行代码分析时,它会重建,并且会显示约 30 条警告:

Processing COM reference 'SldWorks' from path "..." At least one of the arguments for "..." cannot be marshaled by the runtime marshaler.

Interface "..." is marked as [dual], but does not derive from IDispatch. It will be converted as an IUnknown-derived interface.

我不知道这些是否是不同的问题。只是想知道我是否可以让所有类型正确显示。

最佳答案

我在使用 VS 2015 时遇到了这个问题。在我的例子中,通过启用“使用托管兼容模式”选项,我能够在调试器中看到 com 对象类型

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

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

关于c# - 在 Visual Studio 中调试时,某些对象显示为 System.__ComObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50788468/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com