2011-03-11 25 views
6

Tengo una aplicación C# .Net 4.0 por un lado y, por otro, una aplicación VB6. Creé una interfaz COM haciendo que el proyecto COM visible y el registro activo COM Interop.Visibilidad de clase COM: C# a VB6

Probé la interfaz COM mediante la implementación de una aplicación C# que importa el nuevo archivo tlb. Todo parece estar bien.

Como siguiente paso intenté usar el dll con vb6. El dll podría cargarse pero ahora no puedo ver todas las clases públicas. En C# veo 4 clases en vb6. Solo puedo ver 3.

La clase que no puedo ver es "especial" porque impone una interfaz y sirve eventos.

La clase está marcado con

[ComSourceInterfaces(typeof(COMEvents))] 

y la interfaz es como COMEvents

[Guid("11947063-4665-4DE1-931D-9915CCD01794")] 
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)] 
    public interface COMEvents 
    { 
     void MethodOne(); 
     void MethodTwo(); 
    } 

tengo que decir que todo funcionaba bien. Luego agregué un proyecto que solo afecta a otros ensamblados que están cargados en tiempo de ejecución por el proyecto de interfaz COM. Implementan una interfaz que cambió. Ese es el único cambio que realicé en la interfaz com al agregar un parámetro adicional a un método.

¿Por qué no puedo ver la clase más? ¿Y por qué es solo la clase que cambié pero de ninguna manera "arriesgada"?

necesito ayuda ¡gracias!

PS: Lo intenté hasta ahora: -> todo proyecto son la versión x86 -> Proyecto Construir en la máquina x86 -> Dependency Walker (GPSVC.DLL y ieshims.dll faltan sino que también lo hicieron antes y no creo que tengan ningún efecto porque el tlb es compilación y podría cargarse) -> tryied tlbexp.exe pero recibe un error de dependencia porque el tiempo de ejecución de la assambly es más nuevo que el actual. wtf?)

Respuesta

4

Lo encontré ... tenía un constructor con 2 parámetros y VB6 no admite constructores con más de cero parámetros.

+1

Hace que se pregunte ... "obtener un error de dependencia porque el tiempo de ejecución de assambly es más nuevo que el actual." .... Un error completamente no relacionado, y aún así perseveró. Te saludo, valiente. –

Cuestiones relacionadas