Как отладки приложений с помощью интерфейсов COM?
Вопрос
Я создаю приложение, используя C #, который будет использовать модули CATIA COM. Когда я импортирую COM внутри моего проекта C #, я думаю, что Visual C # Express создает взаимозависимость автоматически для меня.
Все это работает правильно. Однако, когда я пытаюсь отладить приложение и использовать часы во время выполнения, каждый объект является System.__ComObject
И я не могу получить свою «реальную» ценность.
Есть ли способ сказать отладчику типов моими объектами COM?
Цель состоит в том, чтобы получить более знакомые с помощью этой новой API, я не знаю очень хорошо. Иногда его довольно трудно угадать правильные типы для всего, поскольку иерархия интерфейса довольно глубокая
Решение
Вы не публикуете пример кода, где у вас есть проблема. В основном это зависит от Как вы создаете или отливите объект который вы хотите увидеть в отладчике (создайте экземпляр объекта с 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/
Другие советы
В Visual Studio, если вы открываете инструменты >> Параметры, а затем отладка >> Общие, убедитесь, что опция «Использовать режим совместимости», который он проверил. Это должно показывать COM объекты как свои правильные типы в отладчике.