Gacutil.exe (программа глобального кэша сборок)

С помощью программы глобального кэша сборок можно просматривать содержимое глобального кэша сборок и кэша загрузки, а также управлять им.

Эта программа автоматически устанавливается вместе с Visual Studio. Для запуска этого средства используйте Командную строку разработчика или PowerShell для разработчиков в Visual Studio.

В командной строке введите следующее.

Синтаксис

gacutil [options] [assemblyName | assemblyPath | assemblyListFile]

Параметры

Аргумент Описание
имя_сборки Имя сборки. Можно предоставить либо частично указанное имя сборки, например myAssembly, либо полное имя сборки, например myAssembly, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0038abc9deabfle5.
assemblyPath Имя файла, содержащего манифест сборки.
assemblyListFile Путь к текстовому файлу ANSI, в котором перечислены устанавливаемые или удаляемые сборки. Чтобы использовать текстовый файл для установки сборок, укажите путь к каждой сборке в отдельной строке файла. Программа интерпретирует относительные пути относительно расположения assemblyListFile. Чтобы использовать текстовый файл для удаления сборок, укажите в нем полное имя каждой сборки в отдельной строке. Примеры содержимого списка assemblyListFile приведены ниже в этом разделе.
Параметр Описание:
/cdl Удаляет содержимое кэша загрузки.
/f Чтобы принудительно переустановить сборку, укажите этот параметр с ключом /i или /il. Если сборка с этим именем уже существует в глобальном кэше сборок, она будет перезаписана.
/h[elp] Отображает синтаксис команд и параметров программы.
/iassemblyPath Устанавливает сборку в глобальный кэш сборок.
/ifassemblyPath Устанавливает сборку в глобальный кэш сборок. Если сборка с этим именем уже существует в глобальном кэше сборок, она будет перезаписана.

Этот параметр аналогичен одновременному указанию параметров /i и /f.
/ilassemblyListFile Устанавливает одну или несколько сборок, перечисленных в файле assemblyListFile, в глобальный кэш сборок.
/irassemblyPath

scheme

id

description
Устанавливает сборку в глобальный кэш сборок и добавляет ссылку для счетчика сборки. Параметры assemblyPath, scheme, id и description являются обязательными. Описание допустимых значений для этих параметров см. в описании параметра /r.

Этот параметр аналогичен одновременному указанию параметров /i и /r.
/l [assemblyName] Отображает содержимое глобального кэша сборок. Если задан параметр assemblyName, отображаются только сборки с соответствующими именами.
/ldl Выводит содержимое кэша загруженных файлов.
/lr [assemblyName] Отображает все сборки и соответствующие счетчики ссылок. Если задан параметр assemblyName, отображаются только сборки с соответствующими именами и их счетчики ссылок.
/nologo Отключает отображение эмблемы Майкрософт при запуске.
/r [assemblyName | assemblyPath]

scheme

id

description
Задает отслеживаемую ссылку для устанавливаемых или удаляемых сборок. Укажите этот параметр с параметрами /i, /il, /u или /ul.

Чтобы установить сборку, укажите параметры assemblyPath, scheme, id и description с этим параметром. Чтобы удалить сборку, укажите параметры assemblyName, scheme, id и description.

Чтобы удалить ссылку на сборку, необходимо задать те же параметры scheme, id и description с параметрами /i и /r (или /ir), которые были указаны при установке сборки. При удалении сборки она также удаляется из глобального кэша сборок, если она является последней удаляемой ссылкой и на нее не ссылаются другие ссылки в установщике Windows.

Параметр scheme задает тип схемы установки. Можно указать одно из следующих значений.

— UNINSTALL_KEY: задайте это значение, если приложение добавляется в компонент "Установка и удаление программ" операционной системы Microsoft Windows. Добавление приложений в компонент "Установка и удаление программ" осуществляется путем добавления раздела реестра в HKLM\Software\Microsoft\Windows\CurrentVersion.
— FILEPATH: задайте это значение, если приложение не добавляется в компонент "Установка и удаление программ".
— OPAQUE: задайте это значение, если раздел реестра или путь к файлу не используется для этого сценария установки. Это значение позволяет задать пользовательские сведения для параметра id.

Значение параметра id зависит от значения параметра scheme:

— Если значение параметра scheme равно UNINSTALL_KEY, укажите имя приложения, задаваемое в разделе реестра HKLM\Software\Microsoft\Windows\CurrentVersion. Например, если раздел реестра называется HKLM\Software\Microsoft\Windows\CurrentVersion\MyApp, параметр id должен иметь значение "MyApp".
— Если значение параметра scheme равно FILEPATH, параметр id должен содержать полный путь к исполняемому файлу приложения, которое устанавливает сборку.
— Если значение параметра scheme равно OPAQUE, параметр id может принимать любое значение. Значение параметра должно быть заключено в двойные кавычки ("").

В параметре description можно указать описание приложения, которое будет установлено. Эти сведения отображаются при перечислении ссылок.
/silent Отключает отображение всех выходных данных.
/uassemblyName Удаляет установленную сборку из глобального кэша сборок.
/ufassemblyName Принудительно удаляет указанную сборку путем удаления всех ссылок на нее.

Этот параметр аналогичен одновременному указанию параметров /u и /f. Примечание: Этот параметр нельзя использовать для удаления сборки, установленной с помощью установщика Microsoft Windows. При попытке удаления такой сборки будет выведено сообщение об ошибке.
/ulassemblyListFile Удаляет из глобального кэша сборок одну или несколько сборок, список которых содержится в файле assemblyListFile.
/u[ngen] assemblyName Удаляет указанную сборку из глобального кэша сборок. Если для заданной сборки существуют счетчики ссылок, они отображаются, а сборка не удаляется из глобального кэша сборок. Примечание: В платформа .NET Framework версии 2.0 /ungen не поддерживается. Вместо этого используйте команду uninstallпрограммы Ngen.exe (генератор образов в машинном коде).

В .NET Framework версий 1.0 и 1.1 при указании параметра /ungen программа Gacutil.exe удаляет сборку из кэша образов в машинном коде. В этом кэше хранятся образы в машинном коде для сборок, созданных с помощью программы Ngen.exe (генератор образов в машинном коде).
/urassemblyName

scheme

id

description
Удаляет ссылку на указанную сборку из глобального кэша сборок. Чтобы удалить ссылку на сборку, необходимо задать те же параметры scheme, id и description с параметрами /i и /r (или /ir), которые были указаны при установке сборки. Описание допустимых значений для этих параметров см. в описании параметра /r.

Этот параметр аналогичен одновременному указанию параметров /u и /r.
/? Отображает синтаксис команд и параметров программы.

Комментарии

Примечание

Чтобы использовать программу Gacutil.exe, необходимы права администратора.

С помощью программы Gacutil.exe можно устанавливать и удалять сборки из кэша и отображать содержимое кэша.

Программа Gacutil.exe включает в себя параметры, с помощью которых осуществляется подсчет ссылок, аналогичный схеме подсчета, поддерживаемой установщиком Windows. Программа Gacutil.exe позволяет устанавливать два приложения, которые, в свою очередь, устанавливают одну и ту же сборку. Программа отслеживает число ссылок на сборку. В результате сборка будет оставаться на компьютере до тех пор, пока оба приложения не будут удалены. При использовании программы Gacutil.exe для установки программных продуктов задавайте параметры, поддерживающие подсчет ссылок. Чтобы установить сборку и добавить ссылку для подсчета, укажите параметры /i и /r. Чтобы удалить подсчет ссылок для сборки, укажите параметры /u и /r. Помните, что при указании только одного параметра /i или /u подсчет ссылок осуществляться не будет. Эти параметры можно использовать во время разработки программного продукта, но не при установке готового программного обеспечения.

Для установки или удаления списка сборок, хранящегося в текстовом файле ANSI, укажите параметры /il или /ul. Содержимое текстового файла должно иметь правильный формат. Чтобы использовать текстовый файл для установки сборок, укажите путь к каждой сборке в отдельной строке файла. Ниже приведен пример содержимого файла со списком устанавливаемых сборок.

myAssembly1.dll
myAssembly2.dll
myAssembly3.dll

Чтобы использовать текстовый файл для удаления сборок, укажите в нем полное имя каждой сборки в отдельной строке. Ниже приведен пример содержимого файла со списком удаляемых сборок.

myAssembly1,Version=1.1.0.0,Culture=en,PublicKeyToken=874e23ab874e23ab
myAssembly2,Version=1.1.0.0,Culture=en,PublicKeyToken=874e23ab874e23ab
myAssembly3,Version=1.1.0.0,Culture=en,PublicKeyToken=874e23ab874e23ab

Примечание

Попытка установить сборку с именем, количество символов в котором превышает 79 и 91 символ (включая расширение файла), может привести к следующей ошибке:

Failure adding assembly to the cache:   The file name is too long.

Это вызвано тем, что Gacutil.exe конструирует путь длиной до числа символов, определяемого значением MAX_PATH. Этот путь состоит из следующих элементов:

  • GAC Root — 34 символа (например, C:\Windows\Microsoft.NET\assembly\);
  • Architecture — 7 или 9 символов (например, GAC_32\, GAC_64\, GAC_MSIL);
  • AssemblyName — до 91 символа в зависимости от размера других элементов (например, System.Xml.Linq\).
  • AssemblyInfo — 31–48 символов или больше, включая:
    • Платформа — 5 символов (например, v4.0_)
    • AssemblyVersion — от 8 до 24 символов (например, 9.0.1000.0_).
    • AssemblyLanguage — от 1 до 8 символов (напримерde_, ) sr-Cyrl_
    • PublicKey — 17 символов (например, 31bf3856ad364e35\)
  • DllFileName — до 91+4 символа (например, <AssemblyName>.dll).

Примеры

Следующая команда устанавливает сборку mydll.dll в глобальный кэш сборок.

gacutil /i mydll.dll

Следующая команда удаляет сборку hello из глобального кэша сборок, если для нее не существует подсчет ссылок.

gacutil /u hello

Обратите внимание, что предыдущая команда может удалить несколько сборок из глобального кэша сборок, так как имя сборки задано не полностью. Если в кэше установлены сборки hello версий 1.0.0.0 и 3.2.2.1, команда gacutil /u hello удалит обе сборки.

В следующем примере рассмотрена команда, позволяющая избежать удаления нескольких сборок. Эта команда удаляет только ту версию сборки hello, которая соответствует заданным полному номеру версии, языку и региональным параметрам, и открытому ключу.

gacutil /u hello, Version=1.0.0.1, Culture="de",PublicKeyToken=45e343aae32233ca

Следующая команда устанавливает сборки, перечисленные в файле assemblyList.txt, в глобальный кэш сборок.

gacutil /il assemblyList.txt

Следующая команда удаляет сборки, перечисленные в файле assemblyList.txt, из глобального кэша сборок.

gacutil /ul assemblyList.txt

Следующая команда устанавливает myDll.dll в глобальный кэш сборок и добавляет ссылку для счетчика. Сборка myDll.dll используется приложением MyApp. Параметр UNINSTALL_KEY MyApp задает раздел реестра, который добавляет приложение MyApp в компонент "Установка и удаление программ" в ОС Windows. Параметр описания указывается как My Application Description.

gacutil /i /r myDll.dll UNINSTALL_KEY MyApp "My Application Description"

Следующая команда устанавливает myDll.dll в глобальный кэш сборок и добавляет ссылку для счетчика. Значение параметра "scheme" FILEPATH и значение параметра "id" c:\applications\myApp\myApp.exe задают путь к приложению, которое устанавливает myDll.dll.. Значение параметра "description" — MyApp.

gacutil /i /r myDll.dll FILEPATH c:\applications\myApp\myApp.exe MyApp

Следующая команда устанавливает myDll.dll в глобальный кэш сборок и добавляет ссылку для счетчика. Значение параметра "scheme", заданное как OPAQUE, позволяет указывать любые значения для параметров "id" и "description".

gacutil /i /r mydll.dll OPAQUE "Insert custom application details here" "Insert Custom description information here"

Следующая команда удаляет ссылку на myDll.dll из приложения myApp. Если это последняя ссылка на сборку, сборка будет удалена из глобального кэша сборок.

gacutil /u /r myDll.dll FILEPATH c:\applications\myApp\myApp.exe MyApp

Следующая команда выводит содержимое глобального кэша сборок.

gacutil /l

См. также