2012-03-27 2 views
9

Так, на Win 2008 R2 Std x64, у меня есть 6 (шесть) Gacutil.exe все разные (не считая тех, в папках VS), в:Какой gacutil.exe следует использовать?

  1. C: \ Program Files \ Microsoft SDKs \ Windows \ v6.0A \ Bin
  2. C: \ Program Files \ Microsoft SDKs \ Windows \ v6.0A \ Bin \ x64
  3. C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7 .0A \ Bin
  4. c: \ Program Files (x86) \ Microsoft SDK \ Windows \ v7.0A \ Bin \ x64
  5. C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin \ NETFX 4.0 Инструменты
  6. C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin \ NETFX 4.0 Tools \ x64

Вопросов:

  1. ли x64 версии какие-либо различия в поведении?
  2. Должен ли я предпочитать v7.0A Другие версии v6.0A?
  3. Должен ли я использовать версии NETFX 4.0 Tools для сборок .NET 4.0 и «стандартную» версию для остальных?

Или, если у вас есть статья общего типа по данной теме, я буду благодарна.

Update 1. Относительно Hans Passant's answer:

  1. gacutil.exeявляется .NET Framework Tool часть "сборки, развертывания и инструменты конфигурации (.NET Framework)", так как теперь устарели (!) shfusion.dll был;
  2. Действительно, v6.0A из VS2008 устанавливаются и могут игнорироваться (1, 2);
  3. 64-битная теория объяснения также звучит разумно. Я также предполагаю, что, скорее всего, есть IA64 version of gacutil.exe, так что это похоже на «инструментальную копию для каждой платформы», это просто так, что версия x86 отлично работает везде из-за WoW64. Версия Minus 2 gacutil из списка (4, 6);
  4. Часть о том, какая версия использовать, кажется неправильной. V4.0 gacutil.exe обнаруживает и размещает сборку в соответствии с целевым CLR и отлично работает как для сборки .NET 4.0, так и для более ранних версий. Итак, вопрос в том, зачем оставлять V2.0 gacutil.exe? Мое предположение было бы для развертывания в средах, где .NET4.0 недоступен.
  5. Чтобы использовать или не использовать GAC, в этом вопросе не было. Поэтому я оставляю последний абзац без комментариев.

Update 2.

Так, мне кажется, можно смело использовать любой номер 3 (то .NET4.0 недоступен) или номер 5 в противном случае для всех операций GAC на Windows x86 и x64 ,И ответы на эти вопросы являются:

  1. No.
  2. не имеет значения, но с использованием более новых версий кажется более логичным.
  3. Нет, вы всегда можете использовать версию NETFX 4.0 Tools (если доступен .NET4.0) для всех операций GAC.
+2

Действительно хотите ответить ... «Ни один из них ... nuget или bin deploy FTW» !! –

+0

@ DanielElliott good one ;-) Но все же, на этот раз я действительно хочу убрать этот вопрос. –

+0

Мне тоже интересно ответить ... удачи! –

ответ

3

Краткая версия: Если у вас установлен .NET 4.0, используйте версию NETFX 4.0 Tools. В противном случае это не имеет большого значения.

Ответы на вопросы:

  1. No.
  2. ли на самом деле не имеет значения, если нет .NET 4.0 установлен, в этом случае вы должны использовать NETFX 4.0 Tools версию. Не уверен, возможно ли иметь SDK версии v7.0 и не установить .NET 4.0.
  3. Нет, вы всегда можете (и должны) использовать версию NETFX 4.0 Tools для всех операций GAC.
3

Gacutil.exe - это инструмент Windows SDK, а не инструмент .NET framework. У вас есть две версии SDK на вашем компьютере. Вы получили 6.0A от установки VS2008, 7.0A от установки 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, установленное на dev-машине. GAC - это подробная информация о развертывании, у вас появятся проблемы, когда ваш GAC имеет сборку, которую не имеет GAC вашего пользователя.

+0

Кроме того, пользователи без прав администратора не смогут установить приложение, требующее, чтобы сборки были в GAC (например, Oracle ODP.NET). В случае ODP.NET копирование локального не работает. –

0

Это не лучший ответ, но я замечаю наблюдение. Используйте папку последней версии на основе того, что вы используете для разработки вашего приложения для соответствующей установки 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 Установки с "Installed On" дата:

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 

Затем я изменил папку для каждой версии.

 Смежные вопросы

  • Нет связанных вопросов^_^