2010-02-12 19 views
5

Tengo problemas cuando uso un dll VB.NET en un programa VB6. Ya he creado mi dll con GuidAttribute, utilicé RegAsm para crear un tlb y lo agregué a las referencias de mi programa VB6. El problema es cuando trato de crear el objeto usando la función CreateObject; sin embargo, aparece el siguiente error "El componente ActiveX no puede crear el objeto".Quiero usar un dll VB.NET en un programa VB6. ¿Es posible?

No sé si me falta alguna declaración en VB.NET para usarla como dll o si no estoy utilizando la función CreateObject correctamente.

+0

Mi Además: Si fijo "Haz COM visible" y luego utilizar el archivo DLL en Visual Basic 6, es eso posible? –

Respuesta

0

tiene que asegurarse de que su componente esté registrado correctamente para cominterop .. en la pestaña de propiedades de los proyectos hay una opción de casilla de verificación para habilitar esto, está en la ruta correcta con la creación de un tipo lib que puede consultar en vb6, puede simplemente agregar referencia a él como cualquier otro compenente. sin embargo, en realidad lo registra en lugar de crear un archivo tlb.

Cuando registra un ensamblaje para ser utilizado por COM, Regasm.exe agrega entradas al registro en la computadora local. Más específicamente, crea claves de registro dependientes de la versión que permiten que varias versiones del mismo ensamble se ejecuten una al lado de la otra en una computadora. La primera vez que se registra un ensamblaje, se crea una clave de nivel superior para el ensamblaje y se crea una subclave única para la versión específica. Cada vez que registra una nueva versión del ensamblaje, Regasm.exe crea una subclave para la nueva versión.

Después de registrar un ensamblaje con Regasm.exe, puede instalarlo en el caché de ensamblaje global para que se pueda activar desde cualquier cliente COM. Si el ensamblaje solo va a ser activado por una sola aplicación, puede colocarlo en el directorio de esa aplicación.

si está interesado en lo que la herramienta genera para el registro utilizar

regasm {ruta de la Asamblea} .dll /regfile:myTest.reg

0

Es difícil de decir con la información que nos ha facilitado , pero parece que no hizo que el ensamblaje se pueda encontrar. De MSDN:

Bajo el HKCR \ CLSID tecla {0000} ... 0000, el valor predeterminado se establece en el identificador de programa de la clase, y dos nuevos nombrados valores, la clase y la Asamblea, se añadió. El tiempo de ejecución lee el valor de ensamblaje del registro y lo pasa al el sistema de resolución del ensamblado en tiempo de ejecución. El resolutor de ensamblaje intenta ubicar el ensamblado, según la información de ensamblaje , como el nombre y el número de versión . Para la resolución de montaje para localizar una asamblea, la asamblea tiene que estar en una de las siguientes lugares:

La caché de ensamblados global (debe ser un ensamblado con nombre ).

En el directorio de la aplicación. Los ensamblados cargados desde la aplicación ruta solo son accesibles desde esa aplicación .

A lo largo de una ruta de archivo especificada con la opción /codebase a Regasm.exe.

Cuestiones relacionadas