【问题标题】:Some Objects Show Up as System.__ComObject when Debugging in Visual Studio在 Visual Studio 中调试时,某些对象显示为 System.__ComObject
【发布时间】:2018-11-20 03:46:35
【问题描述】:

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

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

例如,如果我期待 FeatureManager,它将显示为 FeatureManagerClass

但是,尽管我可以在对象浏览器中看到SldWorksClassModelDoc2Class,但仍有一半人说System.__ComObject,比如SldWorksModelDoc2

当我对项目运行代码分析时,它会重新构建,并且会显示大约 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.

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

【问题讨论】:

  • 不完全符合您的要求,但在监视窗口中,您可以手动转换变量以查看所有属性。我总是认为这是一个给定的障碍,而不是你可以解决的问题。如果你能找到方法,请分享。

标签: c# .net visual-studio com solidworks


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2023-03-18
    • 2014-02-23
    • 1970-01-01
    • 2018-03-06
    • 2016-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多