Gacutil не распознается как внутренняя или внешняя команда?

Я создал консольное приложение с добавлением внешней ссылки Dll.
Теперь мне нужно развернуть свою внешнюю Dll на мою сборку.
Когда я пытался добавить свою dll в GAC.

  GACUTIL.EXE /i MyLibrary.dll  

чтобы добавить мою dll в Assembly, показывая мне ошибку

*gacutil is not recognized as an internal or external comma*

как я могу исправить?

Ответ 1

"Но как я могу развернуть свою DLL на клиентском сервере, потому что у него может не быть визуальной студии?

Если я правильно помню, gacutil также присутствует в папке C:\windows\Microsoft.Net\some\

Другой способ: если вы используете примитив .cmd = > Вы можете связать gacutil.exe и gacutil.exe.config вместе с вашим script.

Еще один способ: если вы используете установщик Windows, который имеет встроенную поддержку сборок GACing.

Также обратите внимание, что существуют разные GAC для сборок x86 и x64 (игнорируйте, если ваша сборка является MSIL).

Ответ 2

Для Путь к Windows 10: C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin

Ответ 3

вероятный дубликат: GAC 32bit против 64bit (gacutil больше не является частью клиентской ОС с момента выхода .Net 3.0, вам нужно использовать соответствующий установщик или установить Windows SDK, который явно переполнен)

Ответ 4

Если вы уже установили Visual Studio, вы можете использовать Командную строку разработчика вместо обычного Command prompt для прямого доступа к gacutil.

Вы можете найти Developer Command Prompt здесь:

Start Menu > Visual Studio 20XX > Developer Command Prompt for VS20XX

Ответ 5

Наша производственная коробка под управлением Windows Server 2016 не имеет инструментов MS SDK для кеша Global-Assembly (GAC) !!! Поэтому я скопировал весь каталог

C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\ 

с моего ноутбука для разработки (Windows 10, на котором установлена VS 2017) на рабочий сервер, на котором я хочу зарегистрировать свой .dll на моем производственном сервере Global Assembly.
copy GACUtil.exe from a dir to the other computer

Сборки, которые мне нужно зарегистрировать: _Net35scannersMonitor.dll, которая является x86 dotNet 2.0, и _Net40scannersMonitor.dll, которая является x64 dotNet 4.x.

В приглашении каталога, где находится мой скопированный gacUtil, я ввел:

  gacutil -i D:\resource\Library\_Net35scannersMonitor.dll

и

  gacutil -i D:\resource\Library\_Net40scannersMonitor.dll

Я использовал один и тот же файл gacUtil.exe (версия файла 4.6.1055.0) для обеих целей. И оба они оказываются в нужном месте dotnet2x86 (C:\Windows\Assembly) и dotnet4 (C:\Windows\Microsoft.NET\Assembly\GAC_MSIL) - Мне не нужно использовать 2 разных gacUtil.exe.

Результат:

The x86 .dll and x64 .dll went to correct assembly respectively

Вывод: Даже если на вашем компьютере нет установленной VS, вы можете скопировать ваш gacutil.exe из его бина с ПК, на котором установлена VS. Не требуется специальной загрузки/установки. Тогда вы можете использовать скопированный gacutil для сборок x86 и x64 !!!