Ayuda con archivos tlb

ToroEon

Bovino Milenario
#1
Que tal compas, el detalle que tengo es que estoy desarrollando varios ensamblados, en C#.Net, en el cual uno de ellos será el punto de entrada, ese ensamblado es visible desde COM, para que otros componentes que se desarrollen en VB6 puedan hacer referencia a este ensamblado. El detalle es que el .exe de VB6 se ejecuta correctamente cuando el .exe se encuentra en la misma carpeta que todos los ensamblados, o al menos con el que es el punto de entrada de mis componentes, pero, por arquitecura de los componentes los exe´s van en una carpeta diferente a la de los ensamblados, entonces que pasa? ps que al mover el exe ya no encuentra la referencia a mi componente tlb(que es el que se genera para hacer referencia desde VB6), y aunque ya lo registre con el regasm y toda la cosa sigue sin jalar. En .Net también pasa esto, pero se resuelve mediante un evento con reflection. Cosa que en VB6 no he podido hacer. Alguien que me pueda ayudar?? De antemano, muchas gracias!
 

ToroEon

Bovino Milenario
#2
En vista de que nadie sabe como hacerlo, o al menos no respondieron, dejo la solución por si a alguien, en alguna ocasión quiere hacer algo similar:

Les comento, que este detalle se genera debido a que el ensamblado (doNetAssembly.dll) tiene diferente ruta a un exe (ya sea VB6, .Net [C# o VB.Net, etc]) y que era necesario resolver la referencia en tiempo de ejecución:

Bueno su ensamblado de .Net lo tienen que generar con la propiedad de "Crear Ensamblado visible a través de COM" en true o en check

IMPORTANTE: Para registrar el ensamblado que se encuentre en la ruta que uds quieran no activen la Casilla de "Registrar para interoperabilidad COM" ya que tendrían que desregistrarlo. Además debera ser generado con Strong Name, y si su ensamblado hace referencia a otros ensamblados, estos también deberan de ser generados con Strong Name.

Todo esto es en las propiedades del proyecto de .Net.

Una vez generado su ensamblado, lo mueven a la carpeta que quieran y proceden a generar el archivo .tbl con la siguiente línea de comandos, desde el shell de VS.Net (situarse en el shell en la ruta donde se encuentre su ensamblado ): tlbexp doNetAssembly.tlb doNetAssembly.dll, luego de darle enter se procede a registrar dicho ensamblado con el siguiente comando: regasm /tlb:doNetAssembly.tlb doNetAssembly.dll /codebase, y ya con eso pueden agregar como referencia su ensamblado, OJO en vez de agregar como referencia el archivo con extensión .dll será el de .tlb.

Espero que a alguien le sirva, salu2!!!
 
Arriba