Что gacutil.exe должен ли я использовать?
Итак, на Win 2008 R2 Std x64, у меня есть 6 (шесть) gacutil.exe все разные (не считая тех, что в папках VS), в:
-
c:Program файлыMicrosoft SDKsWindowsv6. 0ABin c:Program файлыMicrosoft пакет SDK папкеWindowsV6 двигателем.0АБинх64-
c:Program файлы (x86)Microsoft SDKsWindowsv7. 0ABin -
c:Program файлы (x86)Microsoft SDKsWindowsv7. 0ABinx64 - c:Program файлы (x86)Microsoft SDKsWindowsv7. 0ABinNETFX 4.0 Tools
файлы c:Program (для x86)Microsoft пакет SDK папкеWindowsВ7.0АБинNETFX 4.0 инструментых64
Вопросы таковы:
- есть ли у версий
x64
какие-либо различия в поведении? - должен ли я предпочесть
v7.0A
версии другимv6.0A
? - должен ли я использовать версии
NETFX 4.0 Tools
для сборок .NET 4.0 и "стандартную" версию для остальных?
Или, если есть какая-то статья общего типа по этому вопросу, я буду благодарный.
Обновление 1. относительно ответа Ганса Пассанта :
- gacutil.ехе это .Основы инструмент. net часть "построение, развертывание и настройка инструментов (.Net фреймворка)" как сейчас устарело (!) шфузия.dll была;
- действительно v6. 0A из VS2008 install, и его можно игнорировать (1, 2); 64-битная теория объяснения также звучит разумно. Я также предполагаю, что существует, скорее всего, версия IA64 gacutil.exe , так что это как "копия инструмента для каждой платформы", это просто произошло так, что версия x86 работает нормально везде из-за WoW64. Минус 2 версии gacutil из списка (4, 6); Часть о том, какую версию использовать, кажется неправильной. В4.0 gacutil.exe обнаруживает и размещает сборку в соответствии с ее целевой средой CLR и прекрасно работает как для сборок .NET 4.0, так и для более ранних версий. Так что вопрос в том, зачем оставлять V2. 0 gacutil.отлично? Мое предположение было бы с целью развертывания на есть сред .Серии net4.0 недоступна.
- использовать или не использовать GAC, не было в вопросе. Поэтому я оставляю последний абзац без комментариев.
Обновление 2.
Таким образом, мне кажется, что можно безопасно использовать либо число 3 (тогда .NET4.0 недоступен), либо число 5 в противном случае для всех операций GAC на Windows x86 и x64. И ответы на эти вопросы таковы:
- нет.
- не имеет значения, но использование более новых версий кажется более эффективным. логический.
- Нет, вы всегда можете использовать версию
NETFX 4.0 Tools
(Если.NET4. 0 доступен) для всех операций GAC.
3 ответа:
Gacutil.exe-это средство Windows SDK, а не .NET framework. У вас есть две версии SDK на вашем компьютере. Вы получили 6.0 A от установки VS2008, 7.0 A от установки VS2010. У вас также есть 64-разрядная операционная система, поэтому вы также получили 64-разрядные инструменты. Который не имеет значения для gacutil.exe, не уверен, почему они включают его отдельно. Вероятно, чтобы сохранить работу командной строки Visual Studio, обратите внимание, что у вас есть отдельные 32-разрядные и 64-разрядные версии. Что очень важно для C++ проекты. VS2010 позволяет таргетировать как CLR версии 4, так и CLR версии 2, так что всего 6 версий.
Большое значение имеет то, что у вас есть два GAC на вашем компьютере. GAC для сборок .NET 4 хранится в c:\windows\microsoft.net\assembly для более ранних версий он хранится в c:\windows\assembly. Вы должны использовать правильную версию gacutil.exe, чтобы получить сборку в надлежащий GAC. Для сборки, предназначенной для .NET 4, Вы должны использовать сборку из Bin\NETFX 4.0 Инструменты. А для более ранних, Вы должны использовать один в Bin.
Использовать его совсем не лучше, сборки должны иметь свойство Copy Local, установленное на машине разработки. GAC-это деталь развертывания, вы попадете в беду, когда у вашего GAC есть сборка, которой нет у GAC вашего пользователя.
Краткая версия: если у вас установлена .NET 4.0, используйте
NETFX 4.0 Tools
версию. В противном случае это не имеет значения.Ответы на вопросы:
- нет.
- на самом деле не имеет значения, если не установлен .NET 4.0, в этом случае вы должны использовать версию
NETFX 4.0 Tools
. Не уверен, если это возможно, чтобы иметь В7.0 SDK и нет .Net версии 4.0 установлен.- Нет, вы всегда можете (и должны) использовать версию
NETFX 4.0 Tools
для всех операций GAC.
Это не самый лучший ответ, но я замечаю одно наблюдение. Используйте папку последней версии, основанную на том, что вы используете для приложения, разрабатываемого для соответствующей установки Visual Studio.
C:\Program Files (x86)\Microsoft SDKs\Windows\{SDK version}\bin\NETFX 4.5.1 Tools\gacutil.exe
При сравнении панели управления > Программы и компоненты > дата "установлен на" для моих установок Visual Studio, я вижу много различных папок здесь. Я предполагаю, что несколько папок были обновлены во время этих двух установок.
Папки, где "gacutil.exe" дата регистрации и изменения:
C:\Program Files (x86)\Microsoft SDKs\Windows\ C:\Program Files (x86)\Microsoft SDKs\Windows\v6.0A\ - 3/20/2014 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\ - 3/20/2014 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\ - 5/15/2015 C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0\ - 3/20/2014 C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\ - 5/15/2015 C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1\ - 5/15/2015 C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\ - 5/15/2015
Установки Windows Visual Studio с датой" установлен на":
Visual Studio 2012 - 3/20/2014 Visual Studio 2013 - 5/15/2015
Чтобы получить сравнение того, что находится в GAC, я запустил эту команду и различил файлы для сравнения.
cd C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\ gacutil /l > c:\v8.1A.gac.txt
Затем я изменил папку соответствующим образом для каждой версии.