Pregunta

Tengo 2 DLL .NET que expongo a COM usando Regasm. Para simplificar la referencia dentro de un cliente COM, me gustaría convertirlos en un solo archivo.

Intenté convertir ambos archivos en IDL y luego copiar el contenido de la sección de la biblioteca de uno a la otra y luego compilar nuevamente a .TLB con MidL. Esto funciona bien para los typedefs dentro del segundo IDL, sin embargo, parece fallar cuando se trata de las interfaces en las que copié. Ole/com Visor puede ver las definiciones de la interfaz, pero cuando intento usar el TLB a través de com no encontrar las interfaces que Copié en.

Quería asegurarme de que antes de pasar demasiado tiempo en esto, que en realidad es posible escaso IDL de esta manera.

¿Fue útil?

Solución 3

Ok, resulta que los problemas que estaba experimentando no estaban relacionados con la fusión de los IDL.

Si desea fusionarse con IDL, puede hacerlo simplemente copiando el contenido de una sección de biblioteca en una IDL en otro. Luego ejecute Midl en el archivo fusionado para convertirlo en un TLB.

Otros consejos

¿Podrías usar Ilmerge ¿Para combinar primero los ensamblados de .NET y luego usar Regasma en el ensamblaje resultante?

ILMerge es una utilidad para fusionar múltiples ensamblados de .NET en un solo ensamblaje de .NET. Funciona en ejecutables y DLL por igual y viene con varias opciones para controlar el procesamiento y el formato de la salida.

No veo una forma obvia de que esto fallara. Dijiste que fusionaste las secciones de la biblioteca, pero no dijiste que copiaste las declaraciones de la interfaz del otro .idl. Esa sería una explicación obvia, pero poco probable.

Un modo de falla es cuando la aplicación del cliente usa la biblioteca de tipos a los punteros de la interfaz de mariscal a través de los límites de los apartamentos o fuera de proceso. Sin embargo, eso requiere claves de registro en interfaces HKCR . .NET no los crea, tendrías que hacerlo tú mismo. Sabrías si lo hiciste, tampoco una gran explicación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top