Как мне зарегистрировать файл DLL .NET в GAC?

83

Я создал .DLLфайл .NET , который хочу зарегистрировать в GAC .

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

C:\"Path of dll"\>gacutil /i dllname.dll
'gacutil' is not recognized as an internal or external command,
operable program or batch file.

Он говорит, что путь неправильный.

Нужно ли мне использовать это в командной строке .NET cmd? Если это так, я не могу найти командную строку .NET.

Винит
источник
Какое было точное сообщение об ошибке? Имеется в виду путь к gacutil.exeили делать dllname.dll?
UuDdLrLrSs

Ответы:

102

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

gacutil /i yourdll.dll

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

Фредрик Мёрк
источник
7
Если у вас нет Visual Studio, вы можете получить доступ к gacutil.exe в C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0 Tools \ По крайней мере, там, где он существует на сервере Win2012R2 .
sonyisda1
У меня есть функции, требующие повышения прав, поэтому при помещении этой dll в сборку будут ли у нее привилегии? Сможет ли пользователь без прав администратора запускать эти функции на повышенных уровнях?
Susarla Nikhilesh
На моей машине он находился в папке C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.1A \ bin \ NETFX 4.5.1 Tools - также требовалось, чтобы я запускал команду через командную строку с повышенными правами.
neminem
35

Вам понадобиться:

  • Строгое имя вашей сборки (Visual Studio, Свойства проекта, вкладка Подписание, Подписать сборку)
  • Измените свои события сборки (Свойства проекта, вкладка События сборки, командная строка после сборки)
   компакт-диск C: \ Program Files \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ Bin
   gacutil.exe / i "$ (TargetPath)" / f / nologo
   gacutil / l "$ (TargetName)" / nologo

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

Рубенс Фариас
источник
В Visual Studio 2017 вам нужно запустить VS от имени администратора, иначе gacutil выйдет из строя из-за отсутствия разрешения.
Натан
19

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

Предостережение:

В более ранних версиях .NET Framework расширение оболочки Windows Shfusion.dll позволяло устанавливать сборки, перетаскивая их в проводник. Начиная с .NET Framework 4, Shfusion.dll устарел.

Источник: Как: установить сборку в глобальный кеш сборок

Андо
источник
2
Вам нужно будет войти в систему с учетной записью администратора, поскольку «Запуск от имени» недоступен для перетаскивания.
Salman Siddiqui
6
На моем конце это никак не повлияло - библиотека не добавляется, сообщения об ошибке нет. Я использую учетную запись администратора.
8
«В более ранних версиях .NET Framework расширение оболочки Windows Shfusion.dll позволяло устанавливать сборки, перетаскивая их в проводнике. Начиная с .NET Framework 4, Shfusion.dll является устаревшим». msdn.microsoft.com/en-us/library/dkkx7f79(v=vs.110).aspx
njplumridge 04
Акцент на «перетаскивание» - копирование и вставка не работают
Тодд
14

Из Википедии :

gacutil.exe - это утилита .NET, используемая для работы с GAC .

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

gacutil.exe /l "assemblyName"

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

gacutil.exe /i "assemblyName"

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

%windir%\assembly\

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

gacutil.exe /?
тбищель
источник
GacUtil не поставляется с .NET. Вспомогательная функция перетаскивания оболочки, которая использовалась для перетаскивания для регистрации сборок, больше не работает.
Ian Boyd
13

Эти ответы, кстати, не говорят вам, что gacutil находится в C: \ WINDOWS \ Microsoft.NET \ Framework \ v1.1 *.

У меня в папке v2.0 его не было. Но я попытался перетащить DLL в папку C: \ WINDOWS \ Assembly, как было предложено здесь ранее, и это было проще и действительно работает, если это библиотека .NET. Я также попробовал библиотеку COM, и это не удалось с ошибкой, что ожидался манифест сборки. Я знаю, что вопрос не в этом, но подумал, что упомянул, что в случае, если кто-то узнает, что не может добавить его, возможно, именно поэтому.

-Том

Том
источник
1
Эти ответы не говорят вам, что gacutilэто не поставляется с Windows.
Ian Boyd
5

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

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

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

  • gacutil / i pathofDll

  • Войти

Готово!!!

БельгияЛошадь
источник
упоминая командную строку «Разработчик», хорошо! поскольку gacutil недоступен для создания командной строки
Muds
3

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

user264138
источник
Акцент на «перетаскивание» - копирование и вставка не работают
Тодд
1
Перетаскивание больше не работает. Обработчик Shell Fusion давно устарел.
Ian Boyd
1

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

gacutil -i C:\MyDlls\GacDeployedAssemblies\dllname.dll

Обращаем внимание на C: \ MyDlls \ GacDeployedAssemblies

вамзее
источник
1

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

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

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

Кайлаш Дакер
источник
0

На Publishвкладке перейдите к application Files.

Затем щелкните unnecessary files.

После этого сделайте исключающий пресс ok.

Наконец, соберите файлы проекта и запустите проекты.

Пракаш Дхар
источник
0

Я перепробовал все в комментариях, и это не сработало. Я сделал это gacutil /i "path to my dll"из Powershell, и это сработало.

Также помните, как нажимать Shift, когда вы щелкаете правой кнопкой мыши файл в проводнике Windows, чтобы получить возможность Копировать путь.

Сидерит Закведекс
источник