2010-06-21 36 views
26

He creado un ensamblado .NET para la interoperabilidad COM y está funcionando bien en mi máquina de desarrollo. Actualmente estoy tratando de averiguar cómo implementar el archivo DLL en una máquina de destino utilizando el "Proyecto de configuración" de Visual Studio. ¿Cómo puedo usar el proyecto de instalación de VIsual Studio para hacer lo siguiente:Utilice Visual Studio Setup Project para registrar automáticamente GAC y un COM Interop DLL

  • Registrar el conjunto (actualmente usando regasm).
    • El ensamblaje debe registrarse con éxito y la biblioteca de tipos (.tlb) debe registrarse con éxito .
    • This answer sugiere descartar regasm en favor del código personalizado. Esta es una buena idea? Si es así, ¿cómo se incluye este código en el proyecto de instalación?
    • This answer sugiere usar el comando /regfile de regasm y luego usar la herramienta de importación en el Registro en el Proyecto de configuración. esto funcionara?
  • instalar el ensamblado en la GAC ​​(en la actualidad el uso de gacutil)
    • Soy consciente de la "Carpeta de caché de ensamblados global" en el "sistema de archivos en el equipo de destino." ¿Hay algo especial que deba hacer al incluir el ensamblaje en el proyecto de instalación?

Cualquier otro tipo de asesoramiento o preocupaciones sería muy apreciada.

Respuesta

33

Gacutil.exe no estará disponible en la máquina de destino. No hay problema, MSI puede hacer el trabajo. Haga clic derecho en "Sistema de archivos en la máquina de destino", Agregar, GAC. Haga clic con el botón derecho en esa carpeta agregada, Agregar, Salida del proyecto. Eso asegura que el ensamblaje se gac-ed.

También puede registrar el conjunto como lo hace Regasm.exe. Establezca la propiedad Registrar de la referencia de salida del proyecto en vsdrpCOM.

+1

¿La propiedad del registro que se establece en 'vsdrpCOM' crea y registra automáticamente el archivo .tlb también? Si no, ¿cómo incluyo el .tlb en el proyecto de configuración (parece que no me gusta que se comparta en la carpeta GAC ​​del proyecto de configuración)? –

+0

Ese es un gran punto. Me acostumbré tanto a escribir 'regasm/tlb ...' que supuse que lo necesitaría, pero sacas un buen punto: la máquina del cliente no escribirá código contra estos ensamblajes. Muchas gracias. –

+0

Para responder a la pregunta de Ben en su comentario, el uso de vsdrpCOM * * creará y registrará automáticamente el archivo .tlb. – Keith

Cuestiones relacionadas