Вручную сгенерировать оболочку ActiveX после dll TLBIMP-ed? - PullRequest
3 голосов
/ 15 января 2009

У меня есть несколько компонентов ActiveX, к которым нужно было получить доступ из проекта C #.

Я могу импортировать их через диалоговое окно добавления ссылок Visual Studio, которое также автоматически генерирует класс-оболочку. (т.е. ABCLib и AxABCLib)

Я знаю, что могу сгенерировать основную сборку взаимодействия вручную, запустив TLBIMP /primary для каждого отдельного файла OCX, но не смог найти способ создания оболочки ActiveX, если я не сделаю это через пользовательский интерфейс Visual Studio.

Существует ли версия командной строки, которая создает оболочку ActiveX в .NET SDK?

Я хочу сгенерировать версию AxABCLib из PIA, которую я получил от TLBIMP вручную. (т.е. установка пространств имен, вывод имени файла dll и т. д.) Возможно ли это?

1 Ответ

7 голосов
/ 15 января 2009

Ох ... нашел его, посмотрев на папку, к которой принадлежит TLBIMP.

Это называется AxImp.

C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\AxImp.exe

Итак, для генерации PIA DLL в собственном настраиваемом пространстве имен:

  1. Зарегистрируйте свой OCX

    regsvr32 abc.ocx

  2. Создайте пару ключей строгого имени для вас, ocx, запустив

    sn -k

  3. Запустите TLBIMP и укажите желаемое пространство имен

    tlbimp abc.ocx /primary /keyfile:abc.snk /out:abc.dll /namespace:MyNamespace

  4. Запустите AXIMP на ocx и используйте переключатель rcw, чтобы использовать собственную PIA DLL, сгенерированную вручную.

    aximp abc.ocx /source /rcw:abc.dll

Это должно сделать это.

Однако есть некоторые проблемы с импортом древних TLB. Я пока не уверен, как это исправить.

...