Escribí un ensamblado .net usando C# para realizar funciones que serán utilizadas por código administrado y no administrado. Tengo un proyecto VB6 que ahora necesita usar el ensamblado a través de COM.Hacer referencia al ensamblado .NET en VB6 no funcionará
Creé mi .NET assembly, me aseguré de que ComVisible esté configurado en true y de que esté registrado para interoperabilidad COM a través de las propiedades del proyecto.
public class MyClass
[ComVisible(true)]
public string GetResponse()
{
return "Testing Response"
}
}
Construyo el ensamblaje y copio el archivo en una carpeta. TestInterop.dll
A continuación, ejecuto un archivo por lotes para registrar la herramienta de ensamblaje para registrar el objeto para COM.
cd C:\Windows\Microsoft.NET\Framework\v4.0.30319\
regasm "c:\Program Files\TestApp\TestInterop.dll" /tlb:TestInterop.tlb
puedo abrir una nueva aplicación de Visual Basic 6 y referencia TestInterop.dll
En VB6 escribo el siguiente código y compila.
Dim obj as TestInterop.MyClass
Set obj = new TestInterop.MyClass
Dim strTest as string
strTest = obj.GetRespose()
Cuando corro los errores que programa en la línea obj.GetResponse().
Run-time error' -2147024894 (80070002'):
Automation error
The system cannot find the file specified
Además, el intellesense no funciona en obj. Tuve que escribir el método GetResponse
. ¿Esto es normal?
¿Alguien tiene alguna pista de lo que podría estar mal o qué pasos me perdí. ¡Gracias!
Funcionó como un encanto.¡Muchas gracias! Ejecuté la herramienta Regasm usando el comando/codebase. La/codebase también crea el archivo tlb para usted. Gracias a todos por sus respuestas. – dretzlaff17