Necesito vincular tarde a un objeto COM VB6 de terceros en una aplicación 3.5 C# (para evitar las dependencias de versión que tenemos actualmente). El dll que se proporcionó no es consumible en la mayoría de las formas que no se han cerrado debido a algún error que causa errores cuando tratamos de consumirlo normalmente. Actualmente, estamos usando un contenedor VB6 personalizado que hace que las cosas sean MUY específicas para la versión, sin embargo, he descubierto que puedo usar el enlace tardío para acceder a propiedades y métodos. Ahora, estoy intentando enlazar tarde a eventos, sin embargo, todo lo que he leído dice que necesito heredar de la interfaz del contenedor COM para crear los receptores de eventos necesarios. Here is one such article.Cómo enlazar tardíamente el evento COM sin interfaz
Por lo tanto, mi pregunta es si es posible realizar el manejo de eventos enlazados tarde sin tener ninguna referencia a la DLL en el momento de la compilación?
ACTUALIZACIÓN
Éstos son los errores que tengo con la envoltura de VB6 (que todavía está siendo realizan actualizaciones).
- En OleViewer, me sale
No se pudo descompilar elemento seleccionado el tipo de carga de error/DLL. TYPE_E_CANTLOADLIBRARY ($ 80029C4A)
- En Visual Studio me sale:
No se pudo determinar las dependencias de la referencia COM "3rdPartyDLL". Error al cargar la biblioteca/DLL de tipo. (Excepción de HRESULT : 0x80029C4A (TYPE_E_CANTLOADLIBRARY))
Tengo curiosidad: ¿cuáles son los errores que ves cuando intentas utilizar tu objeto VB6 de manera temprana? He escrito muchos componentes VB6 COM y nunca he tenido problemas con el uso de ninguno de ellos en ningún otro entorno (siempre que el cliente admita COM). ¿Por qué te importaría incluso versionar para un componente VB6? ¿Sigue siendo desarrollado activamente por su autor? – xxbbcc
@xxbbcc Aún se está desarrollando activamente y actualicé para mostrar los errores –
@WhozCraig: los eventos de VB6 siempre están basados únicamente en IDispatch. – wqw