Domanda

Voglio esportare gli assembly creati nel mio progetto. Ma dove sono archiviati fisicamente?

È stato utile?

Soluzione

Ho effettivamente trovato questo post, dopo aver scritto la mia domanda. È davvero ben spiegato:

Sarai in grado di vederli se navighi verso

c: \ windows \ assembly

con Explorer, dove vedrai un elenco di assembly ben formattato.
L'estensione della shell responsabile di questa vista mostra non solo gli assembly nel GAC, ma anche le versioni native degli assembly precompilate con ngen.exe.
Ma i file non sono effettivamente memorizzati qui: l'estensione della shell maschera semplicemente la loro vera posizione. Puoi vedere dove sono realmente archiviati i file navigando nella stessa directory tramite un prompt dei comandi.
In questa posizione sono presenti numerose sottodirectory, inclusa una denominata GAC. Sepolto qui sotto diversi strati di codici hash e nomi di assembly risiede gli assembly fisici, insieme a un file .INI vecchio stile che contiene il nome sicuro tra le altre cose. Vale la pena esplorare in questo territorio inesplorato solo per capire cosa sta succedendo sotto le coperte, anche se attenzione a fare cambiamenti poiché il GAC è destinato a essere opaco.

Altri suggerimenti

Sono memorizzati in% systemroot% in una cartella denominata assemblaggio

La variabile% SystemRoot% è una variabile di ambiente speciale a livello di sistema che si trova in Microsoft Windows NT e nelle sue derivate. Il suo valore è la posizione della cartella di sistema, inclusi l'unità e il percorso.

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

* 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)

La posizione fisica del GAC è la directory Assembly in% WINDIR%, ad esempio

c:\windows\assembly

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

no, gli assiemi fisici non sono memorizzati in " C: \ Windows \ assembly " ;. solo i riferimenti agli assiemi sono memorizzati lì. ad esempio, assembly " System.Windows.Forms.dll " (così come la maggior parte degli assembly .NET Framework) è archiviato fisicamente in " C: \ Windows \ winsxs " in molte edizioni, ottimizzato per molte piattaforme (vai a " C: \ Windows \ winsxs " in Explorer e digita " System.Windows.Forms.dll " nella casella di ricerca). ad esempio, è possibile creare un assembly con un nome sicuro, registrarlo nel GAC, ma la posizione fisica è quella in cui si posiziona il file dell'assembly. (ad esempio " C: \ Users \% username% \ Documents \ Visual Studio 2008 \ Projects \ YourAssemblyProjectName \ YourAssemblyProjectName \ bin \ Debug " - Directory predefinita progetti VS). e inoltre, in GAC vengono archiviati solo i riferimenti agli assembly, quindi se si ricostruisce l'assembly che è registrato in GAC, gli assembly che utilizzano l'assembly, facendo riferimento a GAC, utilizzeranno anche una versione ricostruita dell'assembly.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top