Я взаимодействую с 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.
Не знаю, отдельные ли это вопросы. Просто интересно, смогу ли я заставить все типы отображаться должным образом.





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