Подтвердить что ты не робот

С# как зарегистрировать сборку в GAC без GacUtil?

Мне нужно зарегистрировать сборку в GAC, используя командный файл. Есть ли способ найти место установки GacUtil.exe или есть способ зарегистрировать сборку без GacUtil?

4b9b3361

Ответ 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