Некоторые объекты отображаются как системные .__ ComObject при отладке в Visual Studio - PullRequest
0 голосов
/ 11 июня 2018

Я взаимодействую с SolidWorks, используя C #.

Я нахожусь на Visual Studio 2017, последняя версия (15.7.3).Проект ссылается на файлы SolidWorks .tlb, как указано в документации.Для этих ссылок я установил «Embed Interop Types» на false, что позволяет мне видеть тип объектов, с которыми я имею дело при отладке, и смотреть на любые открытые свойства и т. Д.

Например,, если я ожидаю FeatureManager, он будет отображаться как FeatureManagerClass.

Однако половина из них все еще говорит System.__ComObject, как SldWorks или ModelDoc2, хотя яможно видеть SldWorksClass и ModelDoc2Class в обозревателе объектов.

Когда я запускаю анализ кода в проекте, он перестраивается, и появляется ~ 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.

Я не знаю, являются ли это отдельными вопросами.Просто интересно, смогу ли я заставить все типы отображаться правильно.

1 Ответ

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

Я столкнулся с этой проблемой при использовании VS 2015. В моем случае я смог увидеть типы объектов com в отладчике, включив опцию «Использовать режим управляемой совместимости»

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

Это должно показать com-объекты как их собственные типы в отладчике.

...