2009-05-02 21 views

risposta

10

realtà ho trovato questo post, dopo che ho scritto la mia domanda. E 'davvero un buon spiegato:

sarete in grado di vederli, se si passa a

c:\windows\assembly

con Explorer, dove vedrete una lista con una formattazione di assemblee.
L'estensione shell responsabile di questa vista mostra non solo gli assembly nel GAC, ma anche le versioni native degli assembly precompilati con ngen.exe.
Ma i file non sono effettivamente memorizzati qui - l'estensione della shell maschera semplicemente la loro vera posizione. Puoi vedere dove i file sono realmente archiviati navigando nella stessa directory tramite un prompt dei comandi.
In questa posizione sono presenti numerose sottodirectory, incluso un GAC denominato. Sepolto qui sotto diversi livelli di codici hash e nomi assembly risiede negli assembly fisici, insieme a un file .INI obsoleto che contiene il nome forte tra le altre cose. Vale la pena esplorare in questo territorio inesplorato solo per capire cosa sta succedendo sotto le copertine, anche se fai attenzione a fare cambiamenti in quanto il GAC è destinato a essere opaco.

2

L'ubicazione fisica del GAC è la directory Assembly in% WINDIR%, ad es.

c:\windows\assembly 

È possibile copiare gli assembly nel gac con Explorer o il programma gacutil.

3

Essi sono memorizzati in% SystemRoot% in una cartella denominata montaggio variabile

L'% SystemRoot% è una variabile di ambiente a livello di sistema speciale trovato su Microsoft Windows NT e suoi derivati. Il suo valore è la posizione della cartella di sistema, inclusi l'unità e il percorso.

L'unità è uguale a% SystemDrive% e il percorso predefinito in un'installazione pulita dipende dalla versione del sistema operativo. Per impostazione predefinita, in una nuova installazione:

* Windows NT 5.1 (Windows XP) and newer versions use \WINDOWS 
* Windows NT 5.0 (Windows 2000), Windows NT 4.0 and Windows NT 3.1 use \WINNT 
* Windows NT 3.5x uses \WINNT35 

(da wikipedia)

1

no, gli assembly fisici non sono memorizzati in "C: \ Windows \ assembly". qui sono memorizzati solo i riferimenti agli assiemi. ad esempio, assemblaggio "System.Windows.Forms.dll" (così come gran parte degli assembly .NET Framework) è fisicamente memorizzato in "C: \ Windows \ winsxs" in molte edizioni, ottimizzato per molte piattaforme (vai su "C: \ Windows \ winsxs" in Explorer e digita "System.Windows.Forms.dll" nella casella di ricerca). ad esempio, è possibile creare un assembly con un nome forte, registrarlo nel GAC, ma la posizione fisica è dove si posiziona il file di assieme. (ad esempio "C: \ Users \% nomeutente% \ Documents \ Visual Studio 2008 \ Projects \ YourAssemblyProjectName \ YourAssemblyProjectName \ bin \ Debug" - directory predefinita dei progetti VS). e altro ancora, in GAC sono memorizzati solo i riferimenti agli assembly, quindi se si ricostruisce l'assembly che è registrato in GAC, gli assembly che stanno utilizzando l'assembly, facendo riferimento a GAC, utilizzeranno anche una versione ricostruita dell'assembly.

Problemi correlati