Где мой GAC?

Я хотел поближе познакомиться с .Net Global Assembly Cache. Различные источники в Интернете говорят, что его можно найти в Проводнике в C:\WINNT\Assembly. Но у меня, похоже, нет папки WINNT в C: на моей машине с Windows XP. У меня установлен флажок "Показать скрытые файлы и папки", а флажок "Скрыть защищенные файлы операционной системы" не установлен.

Используя методы, описанные в разделе Как определить, какие версии .NET Framework и пакеты обновления установлены? и особенно в http://msdn.microsoft.com/en-us/kb/kbarticle.aspx?id=318785 я вижу, что у меня установлен .Net 4.0.

Как я могу надежно найти это и почему это было бы где-нибудь, но где это должно быть?

Ответ 1

Как отказ от ответственности, я начну с того, что вы никогда не должны напрямую редактировать содержимое своего ПКК.

К информации...

В вашем вопросе есть два разных GAC: 2.0 GAC и 4.0 GAC. Говоря об этом, они не столько ссылаются на версию .NET framework, сколько на версию используемой среды CLR. Так получилось, что в 2.0 CLR равен 2, а в 4.0 CLR равен 4. В качестве справочной системы CLR для .Net 3.5 остался на уровне 2 и, следовательно, GAC для .net 2.0 и .net 3.5 то же самое.

Но где это?

2.0 GAC находится в% WINDIR%\Assembly в проводнике. Для большинства новых ОС Windows% WINDIR% - это C:\Windows по умолчанию. Под капотом это фактически расширение оболочки, скрывающее реальное местоположение GAC, но для ваших целей вы открываете Explorer для C:\Windows\Assembly, чтобы просмотреть содержимое 2.0 GAC. Расширение оболочки также добавляет преимущества перетаскивания сборок в C:\Windows\Assembly, чтобы добавить их в GAC (UAC должен быть отключен в Win7 и выше.)

4.0 GAC находится в C:\Windows\Microsoft.NET\assembly. Вы найдете различные типы сборок, разделенных на свои подкаталоги 32-разрядных, 64-разрядных или MSIL в этой папке. Нет расширения оболочки для CLR4 gac, поэтому вы смотрите на фактическое место на диске, где живут сборки.

Немного не по теме...

Способ, которым я всегда программно обнаруживаю, какие версии .NET Framework установлены, - это посмотреть HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP... вложенные папки указывают установленные версии.

Ответ 2

в windows xp, его c:\windows\и его скрытую папку и можете найти его, вручную набрав каталог, где вы GAC (WINNT был сервером или рабочей станцией .NT 4.0 или сервером Windows 2000 или Windows 2000), и если он обновлен до Windows XP или Windows Server 2003 WINNT, я считаю, что он останется неповрежденным только в этом сценарии, что вы должны использовать% windir% global системная переменная

Im на Windows 8.1 64 бит, а gac все еще находится в C:\Windows\assembly

но .net находится в каталоге c:\windows\Microsoft.NET \, где CLR и среда выполнения

Как ни странно, к другому ответу выше, кажется, я не согласен, что c:\windows\assembly - это "старый gac"

вот мои результаты dos

Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.

C:\WINDOWS\system32>cd..

C:\Windows>cd assembly

C:\Windows\assembly>dir
Volume in drive C is OS
Volume Serial Number is DE26-14AA

Directory of C:\Windows\assembly

11/01/2013  01:15 PM    <DIR>          GAC
11/14/2013  01:10 PM    <DIR>          GAC_32
11/14/2013  01:10 PM    <DIR>          GAC_64
11/14/2013  01:27 PM    <DIR>          GAC_MSIL
11/13/2013  05:36 PM    <DIR>          NativeImages_v2.0.50727_32
11/10/2013  03:22 AM    <DIR>          NativeImages_v2.0.50727_64
11/14/2013  01:33 PM    <DIR>          NativeImages_v4.0.30319_32
11/13/2013  05:36 PM    <DIR>          NativeImages_v4.0.30319_64
11/14/2013  01:33 PM    <DIR>          temp
11/14/2013  01:32 PM    <DIR>          tmp
           0 File(s)              0 bytes
          10 Dir(s)  27,701,415,936 bytes free

C:\Windows\assembly>

c:\windows\microsoft.net\assembly Я не думаю, что это ваш активный GAC, я думаю, что именно там Visual Studio ищет, когда компилируется для конкретной версии x64 или 32 и т.д., другой c:\windows\assembly - текущее состояние вашей машины. но я не эксперт, только то, что я вижу

Ответ 3

C:\Windows\Microsoft.NET\Assembly

C:\Windows\Assembly