我正在构建一个使用C#的应用程序,它将使用CATIA COM模块。当我在c#项目中导入COM时,我认为Visual C# express会自动为我生成互操作。
所有这些都能正常工作。但是,当我尝试调试应用程序并在运行时使用监视时,每个对象都是一个System.__ComObject,并且我无法获得它们的“真正”值。
有没有办法告诉调试器我的COM对象的类型?
我们的目标是更多地熟悉这个我并不是很了解的新API。有时很难猜测所有类型的正确类型,因为接口层次结构非常深
发布于 2010-06-12 07:48:09
你不会在有问题的地方发布代码示例。这在很大程度上取决于您如何创建或强制转换对象,这是您希望在调试器中看到的(当然,如果可能的话,使用new创建对象的实例总是更好)。您应该搜索有关运行时可调用包装(RCW)的信息。这是一个不能理解你想要什么的“家伙”。
顺便说一句,如果你能使用Visual Studio2010,你的生活就会更轻松(参见http://blogs.msdn.com/b/habibh/archive/2009/09/22/debugging-a-com-object-runtime-callable-wrapper-with-visual-studio-2010.aspx)。
两个链接可以帮助您解决问题,如果您使用
http://dotnetdebug.net/category/com-interop/
http://resources.esri.com/help/9.3/arcgisengine/dotnet/e6532ba4-d769-48a6-8bc4-8592352b9bf4.htm
Inspecting an instance of a COM / Interop class properly in VS.Net's debugger?
http://dotnetdebug.net/2005/09/10/runtime-callable-wrapper-internals-and-common-pitfalls/
发布于 2019-02-02 01:20:03
在visual studio中,如果打开“工具”、“常规选项”,然后调试“>>常规”,请确保选中了“使用托管兼容模式”选项。这应将com对象显示为其在调试器中的正确类型。
https://stackoverflow.com/questions/3026540
复制相似问题