Мне нужно зарегистрировать сборку в GAC, используя командный файл. Есть ли способ найти место установки GacUtil.exe
или есть способ зарегистрировать сборку без GacUtil?
С# как зарегистрировать сборку в GAC без GacUtil?
Ответ 1
GacUtil не установлен с установкой фреймворка только с установкой SDK, поэтому вы не можете гарантировать, что он будет установлен на ящике, на котором вы устанавливаете.
Это не будет работать в вашем пакетном файле, но если вы сами разработали приложение, вы можете использовать метод GacInstall, описанный ниже:
http://msdn.microsoft.com/en-us/library/system.enterpriseservices.internal.publish.gacinstall.aspx
В качестве альтернативы я бы рекомендовал создать файл msi для развертывания приложения. Учебник здесь:
http://www.dreamincode.net/forums/topic/58021-deploying-a-c%23-application-visual-studio-setup-project/
Было бы нецелесообразным решение включить копию GacUtil.exe в ваш дистрибутив, потому что она подпадает под другую лицензию, и вы, вероятно, не имеете права ее распространять.
Ответ 2
Ваш лучший выбор - использовать powershell script, который обертывает Publish.GacInstall, например этот
Ответ 3
Вы можете установить DLL в GAC (глобальный кэш сборок), выполнив следующие
[Reflection.Assembly]::LoadWithPartialName("System.EnterpriseServices") | Out-Null
[System.EnterpriseServices.Internal.Publish] $publish = new-object System.EnterpriseServices.Internal.Publish
$publish.GacInstall(<<FullFilePathToTheDll>>)
Это очень мало для родной PowerShell, а скорее для создания экземпляров и использования .NET-библиотек из PowerShell
Сделайте a iisreset
.
Ответ 4
Я использовал InnoSetup и создал установку, включая мою сборку.
Важная строка выглядит следующим образом:
Source: "C:\Program Files (x86)\WinSCP\WinSCPnet.dll"; DestDir: "{app}"; StrongAssemblyName: "WinSCPnet, Version=1.3.7.7333, Culture=neutral, PublicKeyToken=2271ec4a3c56d0bf, ProcessorArchitecture=MSIL"; Flags: ignoreversion gacinstall uninsnosharedfileprompt