Где мой 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