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

标签 c# .net visual-studio com solidworks

我正在使用 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/

相关文章:

c++ - 使用opencv将视频写入文件时遇到问题

c# - 谁能解释这个枚举器语法?

c# - 如何猜测 .NET 中没有 BOM 的文件的编码?

visual-studio - 尝试使用Visual Studio编译OpenCv文件时出现链接器错误

c# - 在 .Net 4.0 中找不到 JavaScriptSerializer

c# - 重载最佳实践

c# - 在 C# 中将二进制数据写入文件的最高效方法

c# - Javascript slugifier 到 C#

c# - WCF + Silverlight 4 : How to configure known types via Web. 配置?

c# - 如何从 float 数组中找到最小值和最大值?