.net com activex tlbimp

.net - Genere manualmente el contenedor ActiveX después de dlls TLBIMP-ed?



com (1)

Tengo varios componentes de ActiveX a los que se debe acceder desde un proyecto de C #.

Puedo importarlos a través del cuadro de diálogo Agregar referencia de Visual Studio, que también generará automáticamente la clase de contenedores. (es decir, ABCLib y AxABCLib )

Sé que puedo generar el ensamblado primario de interoperabilidad manualmente ejecutando TLBIMP /primary en cada archivo OCX individual, pero no pude encontrar una manera de generar el contenedor ActiveX a menos que lo haga a través de la interfaz de usuario de Visual Studio.

¿Hay una versión de línea de comandos que genere el contenedor de ActiveX en .NET SDK?

Quiero generar la versión de AxABCLib desde el PIA que obtuve de TLBIMP manualmente. (es decir, establecer espacios de nombres, nombres de archivos dll de salida, etc.) ¿Es posible?


Oh ... lo encontré después de mirar la carpeta donde pertenece TLBIMP.

Se llama AxImp .

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

Básicamente, para generar una DLL PIA en su propio espacio de nombres personalizado:

  1. Registra tu OCX

    regsvr32 abc.ocx

  2. Genere un par de claves de nombre seguro para su ocx ejecutando

    sn -k

  3. Ejecute TLBIMP y especifique el espacio de nombre deseado

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

  4. Ejecute AXIMP en el ocx y use el conmutador rcw para usar su propia DLL de PIA generada manualmente.

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

Deberias hacer eso.

Sin embargo, hay algunos problemas con la importación de TLB antiguos. No estoy seguro de cómo arreglar eso todavía.