Как установить dll в gac

Обновлено: 06.07.2024

Сводка

Чтобы установить сборку в GAC, необходимо дать сборке сильное имя. Имя — это криптографический хаш-ключ или подпись. Это сильное имя обеспечивает правильную версию компонентов. Это помогает предотвратить конфликт компонентов с одинаковым именем друг с другом или неправильного использования приложения-потребления.

Требования

Глобальный кэш сборок

Чтобы создать небольшой проект библиотеки классов с помощью Visual Studio, создать сильное имя и установить файл .dll проекта в GAC, выполните следующие действия:

В Visual Studio вы можете использовать свойства проекта IDE для создания пары ключей и подписания сборки. Затем можно пропустить шаг 3 и шаг 4, а также пропустить внесение изменений кода в файл AssemblyInfo.cs.

Чтобы использовать свойства проекта IDE для создания пары ключей и подписания сборки, выполните следующие действия:

В обозревателе решений щелкните правой кнопкой мыши GACDemo и нажмите кнопку Свойства.

Щелкните вкладку Подписание, а затем нажмите кнопку "Запишите сборку" (Sign the assembly check box).

В списке Выберите ключ с сильным именем нажмите кнопку .

Введите GACkey.snk в качестве ключевого имени файла, очистить файл Protect my key с флажок пароля, а затем нажмите кнопку ОК.

Нажмите клавишу клавиши CTRL+SHIFT+B для компиляции проекта.

После этого необходимо следовать шагу 5, чтобы установить сборку в GAC.

Создайте каталог с именем GACKey, чтобы можно было легко найти ключ и получить доступ к клавише C:\ в командной подсказке.

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

Компилировать проект путем нажатия CTRL+SHIFT+B. Для установки файла .dll в GAC не нужно иметь дополнительный код.

Вы можете установить .dll с помощью средства Gacutil или перетаскиванием .dll в соответствующую папку. Если вы используете средство Gacutil, вы можете использовать команду, которая похожа на следующую:

Чтобы перетащить файл, откройте два экземпляра Windows Explorer. В одном случае найдите расположение вывода .dll для консоли проекта. В другом примере найдите c:\\Assembly . Затем перетащите .dll файл в папку Сборка.

Сводка

Чтобы установить сборку в GAC, необходимо дать сборке сильное имя. Имя — это криптографический хаш-ключ или подпись. Это сильное имя обеспечивает правильную версию компонентов. Это помогает предотвратить конфликт компонентов с одинаковым именем друг с другом или неправильного использования приложения-потребления.

Требования

Глобальный кэш сборок

Чтобы создать небольшой проект библиотеки классов с помощью Visual Studio, создать сильное имя и установить файл .dll проекта в GAC, выполните следующие действия:

В Visual Studio вы можете использовать свойства проекта IDE для создания пары ключей и подписания сборки. Затем можно пропустить шаг 3 и шаг 4, а также пропустить внесение изменений кода в файл AssemblyInfo.cs.

Чтобы использовать свойства проекта IDE для создания пары ключей и подписания сборки, выполните следующие действия:

В обозревателе решений щелкните правой кнопкой мыши GACDemo и нажмите кнопку Свойства.

Щелкните вкладку Подписание, а затем нажмите кнопку "Запишите сборку" (Sign the assembly check box).

В списке Выберите ключ с сильным именем нажмите кнопку .

Введите GACkey.snk в качестве ключевого имени файла, очистить файл Protect my key с флажок пароля, а затем нажмите кнопку ОК.

Нажмите клавишу клавиши CTRL+SHIFT+B для компиляции проекта.

После этого необходимо следовать шагу 5, чтобы установить сборку в GAC.

Создайте каталог с именем GACKey, чтобы можно было легко найти ключ и получить доступ к клавише C:\ в командной подсказке.

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

Компилировать проект путем нажатия CTRL+SHIFT+B. Для установки файла .dll в GAC не нужно иметь дополнительный код.

Вы можете установить .dll с помощью средства Gacutil или перетаскиванием .dll в соответствующую папку. Если вы используете средство Gacutil, вы можете использовать команду, которая похожа на следующую:

Чтобы перетащить файл, откройте два экземпляра Windows Explorer. В одном случае найдите расположение вывода .dll для консоли проекта. В другом примере найдите c:\\Assembly . Затем перетащите .dll файл в папку Сборка.

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

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

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

Синтаксис

Параметры

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

Чтобы установить сборку, укажите параметры 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 может принимать любое значение. Значение параметра должно быть заключено в двойные кавычки ("").

Примечания

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

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

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

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

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

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

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

Примеры

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

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

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

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

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

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

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

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

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

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

Я использовал эту команду в командной строке Windows Server 2003:

Это говорит, что путь не верен.

ОТВЕТЫ

Ответ 1

Вы можете сделать это, используя инструмент gacutil . В простейшей форме:

Вы найдете командную строку Visual Studio в меню "Пуск" в разделе "Программы" → "Visual Studio" → "Инструменты Visual Studio".

Ответ 2

  • Сильное имя вашей сборки (Visual Studio, Свойства проекта, вкладка Signing, Подпишите сборку)
  • Изменение событий сборки (вкладка "Проекты", вкладка "События", "Командная строка после сборки" ).

Теперь, каждый раз, когда вы создаете свой проект, он будет установлен на GAC.

Ответ 3

Просто перетащите файл DLL в папку C:\Windows\assembly используя проводник Windows.

Ответ 4

Ответ 5

Можно проверить доступность общей сборки в GAC с помощью команды:

Можно зарегистрировать общую сборку в GAC с помощью команды:

Или, отбросив файл сборки в следующем месте с помощью GUI:

Другие варианты этой утилиты будут кратко описаны, если вы используете флаг /? , который:

Ответ 6

Запустить команду командной строки разработчика для V2012 или любой установленной версии в вашей системе

Ответ 7

Попробуйте GACView, если у вас есть страх командных подсказок.

Вы не установили PATH правильно в DOS. Вам нужно указать путь туда, где находится gacutil, чтобы использовать его в DOS.

Ответ 8

Как сказал ando, просто перетащите узел в папку сборки C:\windows \. Он работает.

Ответ 9

В случае, если на окнах 7 gacutil.exe(для сборки сборки в GAC) и sn.exe(для обеспечения уникальности сборки) находится в папке C:\Program Files (x86)\Microsoft SDK\Windows\v7.0A\bin

Затем перейдите к пути gacutil, как показано ниже, выполните следующую команду после замены пути вашей сборки

C:\Program Files (x86)\Microsoft SDK\Windows\v7.0A\bin > gacutil/i "замените путь вашей сборки, который будет помещен в GAC"

Ответ 10

От вкладки "Опубликовать" перейдите в приложение "Файлы", а затем ненужные файлы делают исключение, чем "ok". Создайте файлы проекта. И выполните проекты.

Ответ 11

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

в прошлом я бы просто пошел, чтобы запустить, запустить, введите "assembly" и перетащите мою dll.

вместо этого вам нужно использовать gacutil.exe или создайте установщик для этого. Microsoft на самом деле не рекомендует использовать gacutil, но я все равно пошел по этому маршруту.

чтобы использовать gacutil на машине разработки перейдите к:
Start -> programs -> Microsoft Visual studio 2010 -> Visual Studio Tools -> Visual Studio Command Prompt (2010)

затем используйте эти команды для удаления и переустановки соответственно. Примечание Я не включил .dll в удалить команда.
gacutil /u myDLL
gacutil /i "C:\Program Files\Custom\myDLL.dll"

чтобы использовать Gacutil на машине без разработки, вам придется скопировать исполняемый файл и файл конфигурации с вашей машины dev на производственную машину. Похоже, есть несколько различных версий Gacutil. Тот, который работал на меня, я нашел здесь:
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\gacutil.exe C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\gacutil.exe.config

затем используйте эти команды для удаления и переустановки соответственно
"C:\Users\BHJeremy\Desktop\Installing to the Gac in .net 4.0\gacutil.exe" /u "myDLL"

"C:\Windows\Microsoft.NET\Framework\v4.0.30319\gacutil.exe" /i "C:\Program Files\Custom\myDLL.dll"

в майском случае я не стал копировать gacutil.exe, gacutil.исполняемый.config, а также gacutlrc.dll (из каталога 1033)

на gacutil утилита недоступна на клиентских компьютерах, и лицензия window SDK запрещает ее распространение среди ваших клиентов. Когда ваш клиент не может, не будет (и действительно не должен) загружать 300MB Windows SDK как часть процесса установки вашего приложения.

но MSI и gacutil не делают ничего особенного. Они просто вызывают тот же API, который вы можете назвать сами. Документации о том, как зарегистрировать сборку с помощью кода, см.:

дополнительная документация перед удалением статьи KB:

  • cbSize - размер структуры в байтах.
  • элемент dwflags - зарезервировано, должно быть ноль.
  • guidScheme - сущность, которая добавляет ссылку.
  • szIdentifier - уникальная строка, идентифицирующая приложение, которое установило сборку.
  • szNonCannonicalData - строка, понятная только сущности, которая добавляет ссылку. GAC хранит только эту строку.

1) Откройте CMD как adminstrator на новом сервере.
2) Перейдите в папку, в которую вы скопировали Gacutil.исполняемый. Например . C:\program файлы.(в моем случае.)
3) Введите ниже в командной строке cmd и установите.

другие альтернативы установщику и gacutil-это инструменты GUI, такие как Менеджер Gac или GACAdmin. Или, если вам нравится PowerShell, вы можете использовать PowerShell GAC из которого я являюсь автором.

имейте в виду, что Fusion API неуправляем. Текущая ссылка для него здесь:руководство по разработке > ссылка на неуправляемый API > Fusion

однако существует управляемый метод для добавления сборки в GAC: Система.EnterpriseServices.Внутренний.Издавать.GacInstall И, если вам нужно зарегистрировать любые типы: Система.EnterpriseServices.Внутренний.Издавать.RegisterAssembly

вы также можете просто скопировать файл в GAC с помощью командной строки. Я использую следующий пакетный скрипт для копирования DLL и перезапуска IIS.

Читайте также: