Как я могу сгенерировать исходный код C # для библиотеки COM Interop вместо сборки? - PullRequest
3 голосов
/ 01 июня 2011

При импорте библиотеки COM (либо напрямую с помощью tlbimp, либо косвенно с помощью диалогового окна добавления ссылок в Visual Studio) существует ли способ генерирования исходного кода C # вместо двоичной сборки взаимодействия, например, Interop.Word.dll?

UPD: Отражатель - плохая идея. Проблема в том, что для com интерфейса есть не только подпись, но и порядок членов. Отражатель этого порядка нарушен

Ответы [ 3 ]

1 голос
/ 01 июня 2011

Я бы сгенерировал сборку взаимодействия, используя TLBIMP, и использовал Reflector для ее разборки.Как видите, сборка взаимодействия не имеет реального кода реализации.Затем вы можете просто скопировать и вставить код (или необходимые классы CoClasses и интерфейсы) в новый файл .cs вашего проекта.

0 голосов
/ 01 июня 2011

В общем случае это невозможно. C # не поддерживает все возможные конструкции, необходимые для создания рабочей сборки взаимодействия. Вы не можете добавить, например, атрибуты возвращаемых типов или параметров метода в C #, хотя иногда они необходимы, чтобы помочь маршаллеру правильно переводить некоторые типы C ++.

С уважением, Алоис Круас

0 голосов
/ 01 июня 2011

Вы не можете сгенерировать C # напрямую, но если ваша настоящая проблема заключается в том, что вам нужно настроить библиотеку взаимодействия, то вам, возможно, повезет больше, если использовать специальный инструмент TLBIMP команды CLR Interop для codeplex - он довольно гибкий и у вас есть полный исходный код [к нему.]

http://clrinterop.codeplex.com/releases/view/17579

Обновление : Если вы действительно пытаетесь избежать доставки двоичных файлов, то вы могли бы реально интегрировать вышеупомянутый инструмент (в исходном формате) в свой проект, чтобы сгенерировать эту библиотеку взаимодействия в runtime . Результат? Нет бинарных файлов для отправки.

...