Как отлаживать приложения, используя COM-интерфейсы? - PullRequest
1 голос
/ 12 июня 2010

Я создаю приложение с использованием C #, которое будет использовать CATIA COM-модули. Когда я импортирую COM внутри своего проекта c #, я думаю, что Visual C # express автоматически генерирует Interop для меня.

Все это работает правильно. Однако, когда я пытаюсь отладить приложение и использовать часы во время выполнения, каждый объект имеет значение System.__ComObject, и я не могу получить их "реальное" значение.

Есть ли способ сообщить отладчику типы моих COM-объектов?

Цель состоит в том, чтобы поближе познакомиться с этим новым API, которого я не очень хорошо знаю. Иногда довольно сложно угадать правильные типы для всего, поскольку иерархия интерфейса довольно глубока

Ответы [ 2 ]

2 голосов
/ 12 июня 2010

Вы не публикуете пример кода, где у вас есть проблема.В основном это зависит от того, как вы создаете или преобразуете объект , который вы хотите видеть в отладчике (лучше создать экземпляр объекта с new, если это возможно по причине).Вы должны найти информацию о Runtime Callable Wrapper (RCW).Это «парень», который не может понять, что вы хотите.

Кстати, если вы можете использовать Visual Studio 2010, ваша жизнь может быть проще (см. 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

Проверка экземпляра класса COM / Interop должным образом в отладчике VS.Net?

http://dotnetdebug.net/2005/09/10/runtime-callable-wrapper-internals-and-common-pitfalls/

0 голосов
/ 01 февраля 2019

В Visual Studio, если вы открываете инструменты >> Параметры, а затем отлаживаете >> Общие, убедитесь, что опция «Использовать режим управляемой совместимости» включена. Это должно показать com-объекты как их собственные типы в отладчике.

...