Der Windows Explorer zeigt den .Net Global Assembly Cache (GAC) mit einer Windows Shell Extension als flache Struktur mit nur einer Ebene an. Diese Windows Shell Extension erlaubt auch ein einfaches Einspielen einer Assembly indem man die zugehörige DLL oder EXE einfach per Drag&Drop aus dem Quellordner in den Ordner „C:Windowsassembly“ hineinzieht. Diese Shell Extension erlaubt es aber nicht, eine im GAC befindliche Assembly an einen anderen Ort zu kopieren. Mit einem einfachen Trick kann man jedoch die Ordnerstruktur des GAC im Windows Explorer anzeigen und auch die darin enthaltenen DLLs kopieren.
Standardmäßig wird der GAC im Windows Explorer wie folgt angezeigt:
Es gibt zwei Wege, um eine Assembly aus dem GAC kopieren zu können. Der erste etwas mühsame Weg ist das Öffnen des GAC in einer Windows Command Shell. In der Command Shell wird die Ordnerstruktur des GAC sichtbar:
Jetzt muss man nur noch den richtigen Zielordner finden und kann dann die Assembly mit dem Shell-„Copy“-Befehl in den gewünschten Zielordner kopieren:
Es gibt aber auch eine zweite, wesentlich einfachere Möglichkeit eine Assembly aus dem GAC zu kopieren, nämlich mit Hilfe des Windows Explorers…
Assembly aus dem .NET Global Assembly Cache mit Windows Explorer kopieren
Damit der Windows Explorer die Ordnerstruktur des GAC anzeigt, muss in einer Windows Command Shell folgender Befehl eingegeben werden:
Wobei für “Z:” natürlich auch ein anderer freier Laufwerksbuchstabe verwendet werden kann.
Nach Absetzen dieses Kommandos wird im Windows Explorer ein neues Laufwerk angezeigt, dessen Inhalt unseren GAC inkl. Ordnerstruktur zeigt:
Jetzt kann man auch die Suche des Windows Explorer verwenden, um eine Assembly zu finden. Z.B. Suche nach „Narrator“:
Üblicherweise befindet sich die gesuchte Assembly im Unterverzeichnis „GAC_MSIL“ wenn sie mit der Option „Any CPU“ übersetzt wurde.
Da hier die Windows Shell Extension für den GAC nicht mehr aktiv ist, kann die Datei nun ganz einfach per Drag&Drop oder über das Kontextmenü des Windows Explorers kopiert werden.
Ist doch cool, oder?