[.net] Qual è il modo "corretto" di registrare / installare un assembly nel GAC?


Answers

http://blogs.msdn.com/astebner/archive/2006/11/04/why-to-not-use-gacutil-exe-in-an-application-setup.aspx

Sembra che il gacutil dovrebbe essere evitato; non è un'app ridistribuibile. Invece, il modo "corretto" di installarli sembra utilizzare MSI, in un modo come WIX, pubblicato da CheGueVerra o da un altro script.

Question

Sembra che ci siano molti modi diversi per registrare gli assembly con il GAC, in quanto "funzionano". Tuttavia, qual è il modo "corretto" di farlo?

In risposta a Lou Franco (e gacutil):

Sto usando Gacutil per lo sviluppo, ma mi sembra che non sia il modo corretto di installarlo, dal momento che gacutil non è incluso nelle utility .NET di base oltre .NET 1.1 - è solo uno strumento di sviluppo.

Aggiuntivo: Gacutil (come mostrato nelle risposte di seguito) non è ridistribuibile e, pertanto, non dovrebbe essere utilizzato in alcuna app che si intende fornire a persone che non sono sviluppatori. AKA, clienti. Vedi questo post del blog (e commenti) di Aaron Stebner .

In risposta all'uso di WIX:

WIX potrebbe essere fantastico e tutto, ma come funziona sotto il cofano? Quali dettagli rendono il modo in cui WIX installa l'assieme nel modo giusto per installarlo? Come va? È una chiamata di sistema / .NET? C'è qualche chiamata in una dll seppellita da qualche parte in System32 che deve essere fatta?

(Modifica: sembra che WIX usi MSI sotto il cofano. Vedi i miei commenti nella risposta accettata.)

Modifica finale: sembra che il modo corretto di installare un assembly nel GAC sia l'utilizzo di Windows Installer e nient'altro. Ho intenzione di provare Wix. Ringrazia tutti!







usa gacutil.

Vantaggi: sembra funzionare sempre. svantaggi:

  • deve creare un pacchetto aggiuntivo con il tuo programma di installazione.
  • Come utilità di sviluppo, sembra avere ulteriori effetti collaterali (come forzare l'installazione non importa quale).
  • NON deve essere incluso in alcun ridistribuibile dato ai clienti.



copia direttamente in% WINDIR% \ Assembly.

Vantaggio: semplice

Svantaggio: AFAIK,% WINDIR% \ Assembly si trova esattamente dove è ora e la sua posizione è soggetta a modifiche. Questo lo farebbe irrompere nelle future versioni di windows o se il comportamento di quella cartella cambia. Questo probabilmente non è il modo giusto.

Estremo svantaggio: come detto da madmath:

copia il tuo assembly in c: \ windows \ assembly non funzionerà. Explorer mostra solo una vista semplificata della cartella, che contiene in effetti molte cartelle diverse per diversi tipi di assiemi. Eseguendo una copia da un programma di installazione non si attivano tutte le operazioni eseguite da Explorer in un trascinamento. (scritto qui perché non ho ancora abbastanza reputazione per commentare altri post).