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 !!!