2009-05-02 6 views

Antwort

10

Ich fand diesen Beitrag, nachdem ich meine Frage schrieb. Es ist wirklich gut erklärt:

Sie werden in der Lage sein, sie zu sehen, wenn Sie zu

c:\windows\assembly

mit Explorer navigieren, in dem Sie eine schön formatierte Liste von Baugruppen sehen werden.
Die für diese Ansicht verantwortliche Shell-Erweiterung zeigt nicht nur Assemblys im GAC, sondern auch die nativen Versionen von Assemblys, die mit ngen.exe vorkompiliert wurden.
Aber die Dateien sind nicht wirklich hier gespeichert - die Shell-Erweiterung maskiert einfach ihre wahre Position. Sie können sehen, wo die Dateien wirklich gespeichert sind, indem Sie über eine Eingabeaufforderung zum selben Verzeichnis navigieren.
An diesem Speicherort befinden sich eine Reihe von Unterverzeichnissen, einschließlich eines namens GAC. Unter mehreren Schichten von Hashcodes und Assemblynamen befinden sich die physischen Assemblys und eine altmodische .INI-Datei, die unter anderem den starken Namen enthält. Es lohnt sich, in diesem unerforschten Gebiet zu erkunden, nur um zu verstehen, was unter den Abdeckungen vor sich geht, aber hüte dich davor, Änderungen vorzunehmen, da die GAC undurchsichtig sein soll.

2

Der physische Speicherort des GAC ist das Assembly-Verzeichnis unter% WINDIR%, z.

c:\windows\assembly 

Sie können Baugruppen mit dem Explorer oder dem Gacutil-Programm in den gac kopieren.

3

Sie sind in% systemroot% in einem Ordner Montage

% systemroot% Variable ist ein spezielles systemweite Umgebungsvariable gefunden auf Microsoft Windows NT und seine Derivate genannt gespeichert. Sein Wert ist der Speicherort des Systemordners einschließlich Laufwerk und Pfad.

Das Laufwerk entspricht% SystemDrive% und der Standardpfad bei einer Neuinstallation hängt von der Version des Betriebssystems ab. In der Standardeinstellung auf eine saubere Installation:

* 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 

(aus Wikipedia)

1

Nein, physische Baugruppen werden nicht in "C: \ Windows \ Assembly" gespeichert. werden nur Referenzen auf die Baugruppen gespeichert. zum Beispiel Assembly "System.Windows.Forms.dll" (sowie der Großteil der .NET Framework-Assemblies) ist physisch in "C: \ Windows \ winsxs" in vielen Editionen gespeichert, optimiert für viele Plattformen (gehen Sie einfach zu "C: \ Windows \ winsxs" im Explorer und geben Sie "System.Windows.Forms.dll" in das Suchfeld ein. Beispiel: Sie können eine Assembly mit starkem Namen erstellen und sie im GAC registrieren, aber an ihrem physischen Speicherort platzieren Sie die Assemblydatei. (zum Beispiel "C: \ Benutzer \% Benutzername% \ Dokumente \ Visual Studio 2008 \ Projekte \ YourAssemblyProjectName \ YourAssemblyProjectName \ bin \ Debug" - Standardverzeichnis von VS-Projekten). und mehr, in GAC sind nur Referenzen auf Baugruppen gespeichert. Wenn Sie also Ihre Baugruppe neu erstellen, die in GAC registriert ist, verwenden die Baugruppen, die Ihre Baugruppe verwenden, indem sie aus GAC referenziert, auch eine neu erstellte Version Ihrer Baugruppe.

Verwandte Themen