Un cliente desea consumir nuestras DLL .NET desde VB6. Están diseñados para admitir interoperabilidad inversa y todo funciona bien ... excepto: Hay dos programas VB6 separados en dos directorios diferentes. Parece que es necesario hacer uno de:¿Cómo encuentra un programa COM una DLL .NET registrada para COM Interop?
- Copiar el .NET DLL en ambos directorios, o
- instalar .NET DLL en la GAC
Esta es la observación del cliente y también apoyó por el RegAsm documentation:
Después de registrar un ensamblado utilizando Regasm.exe, se puede instalar en la memoria caché de ensamblados global para que puede ser activado desde cualquier cliente COM. Si el conjunto solo va a ser activado por una sola aplicación, usted puede colocarlo en el directorio de esa aplicación.
Estoy confundido en este punto.
primer punto de confusión:
Por lo que yo entiendo, el tiempo de ejecución COM localiza el archivo DLL utilizando el ID/ID Clase Prog. Cuando miro en el registro en la entrada de identificación de clase, veo la ruta completa a la DLL .NET en la clave CodeBase. ¿Por qué un programa COM que utiliza la Id. De clase/Id. De clase no encuentra la DLL .NET utilizando CodeBase?
Segundo punto de confusión:
El GAC es específico de .NET. ¿Cómo está involucrado en la resolución de referencias COM?