Risposte:
Bene, quindi in pratica è un modo per mantenere le DLL accessibili a livello globale senza preoccuparsi dei conflitti. Niente più inferno DLL. Ogni architettura e versione ottiene il suo posto dove vivere.
Ottiene anche il suo modo di sfogliarlo in Explorer, quindi se vai a
C: \ Windows \ assembly
In Windows Explorer elenca tutte le DLL.
Ma se accendi cmd
, puoi vedere come è veramente strutturato:
C: \ Users \ tritter> cd C: \ Windows \ assembly C: \ Windows \ assembly> dir Directory di C: \ Windows \ assembly 20/07/2009 14:18 <DIR> GAC 17/06/2009 16:22 <DIR> GAC_32 17/06/2009 16:22 <DIR> GAC_64 17/06/2009 16:22 <DIR> GAC_MSIL ... snip ... 0 File 0 byte 9 Dir (s) 90.538.311.680 byte liberi C: \ Windows \ assembly> cd GAC_64 C: \ Windows \ assembly \ GAC_64> dir Directory di C: \ Windows \ assembly \ GAC_64 17/06/2009 16:22 <DIR>. 17/06/2009 16:22 <DIR> .. 19/01/2008 09:54 AM <DIR> blbproxy ... snip ... 19/01/2008 09:54 AM <DIR> srmlib 19/01/2008 06:11 AM <DIR> Dati di sistema 19/01/2008 06:11 AM <DIR> System.Data.OracleClient ... snip ... 0 File 0 byte 34 Dir (s) 90.538.311.680 byte liberi C: \ Windows \ assembly \ GAC_64> cd System.Data C: \ Windows \ assembly \ GAC_64 \ System.Data> dir Directory di C: \ Windows \ assembly \ GAC_64 \ System.Data 19/01/2008 alle 06:11 AM <DIR>. 19/01/2008 alle 06:11 AM <DIR> .. 04/11/2009 12:20 PM <DIR> 2.0.0.0__b77a5c561934e089 0 File 0 byte 3 Dir (s) 90.538.311.680 byte liberi C: \ Windows \ assembly \ GAC_64 \ System.Data> cd 2.0.0.0__b77a5c561934e089 C: \ Windows \ assembly \ GAC_64 \ System.Data \ 2.0.0.0__b77a5c561934e089> dir Directory di C: \ Windows \ assembly \ GAC_64 \ System.Data \ 2.0.0.0__b77a5c561934e089 04/11/2009 12:20 PM <DIR>. 04/11/2009 12:20 PM <DIR> .. 04/11/2009 12:12 3.008.512 System.Data.dll 1 File 3.008.512 byte 2 Dir (s) 90.538.311.680 byte liberi C: \ Windows \ assembly \ GAC_64 \ System.Data \ 2.0.0.0__b77a5c561934e089>
Qui puoi vedere la versione 2.0.0.0__b77a5c561934e089 di System.Data.
Una DLL è identificata da 5 parti:
Sebbene i primi 3 siano generalmente quelli più grandi.
Analizziamolo:
Quindi il GAC deve essere un posto dove archiviare le librerie di codici in modo che siano accessibili a tutte le applicazioni in esecuzione sulla macchina.
Ogni computer in cui è installato Common Language Runtime ha una cache di codice a livello di macchina denominata Global Assembly Cache. La Global Assembly Cache memorizza gli assembly specificatamente designati per essere condivisi da diverse applicazioni sul computer.
È necessario condividere gli assembly installandoli nella Global Assembly Cache solo quando è necessario. Come linea guida generale, mantenere private le dipendenze degli assembly e individuare gli assembly nella directory dell'applicazione a meno che non sia esplicitamente richiesta la condivisione di un assembly. Inoltre, non è necessario installare gli assembly nella Global Assembly Cache per renderli accessibili all'interoperabilità COM o al codice non gestito.
Le cose che contiene MSDN potrebbero sorprenderti ... di solito puoi leggerlo come un articolo. I pezzi più semplici e importanti nella parte superiore, i dettagli intricati più in profondità. Lo spiega sicuramente meglio di quanto potessi.
Si noti che Visual Studio visualizza tutte le DLL nel GAC nella scheda .NET della finestra Riferimenti . (Fare clic con il tasto destro del mouse su un progetto in Esplora soluzioni e selezionare Aggiungi riferimento.) Questo dovrebbe darti un'idea più tangibile.
Global Assembly Cache (GAC) è una cartella nella directory di Windows in cui sono archiviati gli assembly .NET specificatamente designati per essere condivisi da tutte le applicazioni eseguite su un sistema. Gli assembly possono essere condivisi tra più applicazioni sulla macchina registrandoli nella Global Assembly Cache (GAC). GAC è una cache locale di assembly gestita da .NET Framework.
Exe Application, prima di tutto, riferimenti da una directory corrente a una sottodirectory. E quindi, directory di sistema. La directory di sistema VS6.0 era ..windows / system32. La directory di sistema .NET è come il percorso GAC di seguito.
Percorso GAC
1) C: \ Windows \ Assembly (per .NET 2.0 ~ 3.5)
2) C: \ Windows \ Microsoft.NET \ assembly (per .NET 4.0)
Come installare un assembly in GAC (come amministratore)
1) Trascina selezione
2) Utilizzare GacUtil.exe con il prompt dei comandi di Visual Studio
gacutil -i [Path][Assembly Name].dll
Come disinstallare un assembly da GAC (come amministratore)
gacutil -u [Assembly Name], Version=1.0.0.0, PublickeyToken=7896a3567gh