2010-06-21 70 views
26

Ho creato un assembly .NET per l'interoperabilità COM e funziona correttamente sul mio computer di sviluppo. Attualmente sto cercando di capire come distribuire la DLL su un computer di destinazione usando "Progetto di installazione" di Visual Studio. Come posso utilizzare il progetto di installazione di Visual Studio per fare le seguenti cose:Utilizzare Visual Studio Setup Project per registrare automaticamente e GAC una DLL di interoperabilità COM

  • registrare l'assembly (attualmente in uso regasm).
    • L'assembly deve essere registrato con successo e la libreria dei tipi (.tlb) deve essere registrata correttamente .
    • This answer suggerisce la rottamazione regasm in favore del codice personalizzato. Questa è una buona idea? In tal caso, come viene incluso questo codice nel progetto di installazione?
    • This answer suggerisce di utilizzare il comando /regfile di regasm e quindi di utilizzare lo strumento di importazione nel Registro di sistema nel progetto di installazione. Funzionerà?
  • Installare l'assembly nella GAC ​​(attualmente in uso gacutil)
    • Sono consapevole del "Cartella Global Assembly Cache" nel "Sistema di file a computer di destinazione." C'è qualcosa di speciale che devo fare per includere l'assembly nel progetto di installazione?

Qualsiasi altro consiglio o preoccupazioni sarebbe molto apprezzato.

risposta

33

Gacutil.exe non sarà disponibile sul computer di destinazione. Non è un problema, MSI può portare a termine il lavoro. Fai clic con il pulsante destro del mouse su "File system su computer di destinazione", Aggiungi, GAC. Fare clic con il tasto destro del mouse su quella cartella aggiunta, Aggiungi, Uscita progetto. Ciò garantisce che l'assemblaggio sia eseguito correttamente.

Può anche registrare l'assembly come fa Regasm.exe. Impostare la proprietà Register del riferimento di output del progetto su vsdrpCOM.

+1

La proprietà del registro impostata su 'vsdrpCOM' creerà e registrerà automaticamente anche il file .tlb? In caso contrario, come faccio a includere il file .tlb nel progetto di installazione (non sembra che la condivisione nella cartella GAC ​​del progetto di installazione non sia gradita)? –

+0

Questo è un grande punto. Mi sono così abituato a digitare 'regasm/tlb ... 'che ho appena pensato che ne avrei avuto bisogno, ma mi viene in mente un grande punto: la macchina client non scriverà il codice contro questi assembly. Molte grazie. –

+0

Per rispondere alla domanda di Ben nel suo commento, l'uso di vsdrpCOM * creerà e registrerà automaticamente il file .tlb. – Keith

Problemi correlati