Где физически хранятся сборки, установленные в GAC?

StackOverflow https://stackoverflow.com/questions/815362

  •  03-07-2019
  •  | 
  •  

Вопрос

Я хочу экспортировать сборки, встроенные в мой проект. Но где они физически хранятся?

Это было полезно?

Решение

Я действительно нашел этот пост после того, как написал свой вопрос. Это действительно хорошо объяснили:

Вы сможете увидеть их, если перейдете на

c: \ windows \ Assembly

с проводником, где вы увидите красиво отформатированный список сборок.
Расширение оболочки, отвечающее за это представление, отображает не только сборки в GAC, но и собственные версии сборок, предварительно скомпилированных с помощью ngen.exe.
Но файлы на самом деле здесь не хранятся - расширение оболочки просто маскирует их истинное местоположение. Вы можете увидеть, где файлы действительно хранятся, перейдя в тот же каталог через командную строку.
В этом месте находятся несколько подкаталогов, в том числе один с именем GAC. Здесь, под несколькими слоями хеш-кодов и имен сборок, находятся физические сборки, а также старомодный файл .INI, который, помимо прочего, содержит строгое имя. На этой неизведанной территории стоит изучить, чтобы понять, что происходит под прикрытием, хотя остерегайтесь вносить изменения, поскольку GAC должен быть непрозрачным.

Другие советы

Они хранятся в% systemroot% в папке с именем сборка

Переменная% SystemRoot% - это специальная общесистемная переменная среды, встречающаяся в Microsoft Windows NT и ее производных. Его значением является местоположение системной папки, включая диск и путь.

Диск такой же, как% SystemDrive%, и путь по умолчанию для чистой установки зависит от версии операционной системы. По умолчанию в чистой установке:

* 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

(из википедии)

Физическим местоположением GAC является каталог сборки в папке% WINDIR%, например.

c:\windows\assembly

Вы можете копировать сборки в gac с помощью Explorer или программы gacutil.

нет, физические сборки хранятся не в " C: \ Windows \ assembly " ;. там хранятся только ссылки на сборки. например, сборка "System.Windows.Forms.dll" (а также большая часть сборок .NET Framework) физически хранится в «C: \ Windows \ winsxs» во многих редакциях, оптимизированных для многих платформ (просто зайдите в «C: \ Windows \ winsxs» в проводнике и введите «System.Windows.Forms.dll» в поле поиска). например, вы можете создать сборку со строгим именем, зарегистрировать ее в GAC, но это место, где вы размещаете файл сборки. (например " C: \ Users \% username% \ Documents \ Visual Studio 2008 \ Projects \ YourAssemblyProjectName \ YourAssemblyProjectName \ bin \ Debug " - каталог проектов VS по умолчанию). и более того, в GAC хранятся только ссылки на сборки, поэтому, если вы перестраиваете свою сборку, зарегистрированную в GAC, сборки, которые используют вашу сборку, ссылаясь на нее из GAC, также будут использовать восстановленную версию вашей сборки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top