我正在使用 C# 与 SolidWorks 交互。
我使用的是 Visual Studio 2017 最新版本 (15.7.3)。该项目引用了 SolidWorks .tlb
文件,就像文档中所说的那样。在这些引用中,我将“Embed Interop Types”设置为 false
,这样我就可以在调试时查看我正在处理的对象的类型,并查看任何公共(public)属性等。
例如,如果我需要一个 FeatureManager
,它将显示为 FeatureManagerClass
。
然而,他们中的一半仍然说 System.__ComObject
,例如 SldWorks
或 ModelDoc2
,即使我可以看到 SldWorksClass
和 ModelDoc2Class
在对象浏览器中。
当我在项目上运行代码分析时,它会重建,并且会显示约 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/