Crear blibliotecas de clases que se registren en el COM de Windows
by José Jorge Márquez Gómez on mar.30, 2009, under General, Medio
Yo estuve un tiempo buscando como registrar una DLL en el COM para la interoperabilidad con ASP 3.0, PHP, etc.. bueno despues de buscar y buscar, investigar, romperme los ojos… etc… era más simple de lo que pensaba. Para poder registrar una dll en el COM de windows primero debemos definir la clase como visible desde el COM y definirle una key o firma del ensamblado. Se hace de la siguiente manera:
1.- Indicamos al proyecto que sea visible desde el COM.

2.- Creamos la key del proyecto.

Hay que tener en cuenta que a la hora de compilar el ensamblado debemos hacer funciones (procedimientos) que sean “entendibles” por cualquier lenguaje de programación no .net, esto es, usar si se puede, funciones, procedimientos, propiedades, etc.. que devuelvan tipos de datos nativos, así será más facil entender por ASP3.0 por ejemplo, php o cualquier otro. Si un momento dado tu ensamblado posee funciones no compatibles con COM el registro del COM avisará cuando se registre en la máquina (solo si necesita registro para aplicaciones no .NET). Si estos ensamblados se van a usar en .NET solo hay que añadirlos al assembly de windows, esto se hace:
1.- Abrimos una aplicacion consola desde el path de Visual Studio.
2.- Escribimos en la linea de comandos: gacutil -I RUTAENSAMBLADO (Ej. gacutil -I c:\midll.dll)
Si necesitamos interoperabilidad con COM hay que registrar el ensamblado en windows. Se hace: regasm /tlb /codebase RUTAENSAMBLADO (Ej. regasm /tlb /codebase c:\rutadll.dll)
Esto debe mostrarte un mensaje de finalización en ingles como que se ha procedido al registro correctamente, en el caso que hubiera alguna incompatibilidad (como hemos comentado antes) de tipos de datos no compatibles con COM, se verá como en este paso la aplicación regasm lo mostrará.
Bueno, después de escribir este tocho “como mi primr HOLA MUNDO”
del blog. Espero que lo veáis util y hagamos de esto un blog con bastantes post para ayudar…. un saludo!!







abril 14th, 2009 on 20:33
muy util, thx ;D
noviembre 7th, 2009 on 5:59
Hola José, buen dato, solo para complementar tu entrada, tambien podemos hacer que la Clase Pueda InterOperar hacia COM mediante el uso del Atributo ComVisible, si vamos al archivo del Assembly: [AssemblyInfo.vb], dentro veremos el atributo
, por defecto esta configurado en False, pero con True seria suficiente..
Salu2,
noviembre 7th, 2009 on 6:01
Hola de nuevo, Ups, parece que no se vio el codigo que puse..
, era:
” Assembly : ComVisible(False)”