C # как зарегистрировать сборку в GAC без GacUtil? - PullRequest
37 голосов
/ 01 июня 2010

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

Ответы [ 4 ]

25 голосов
/ 07 октября 2010

Ваш лучший выбор - использовать сценарий powershell, который включает Publish.GacInstall , например this

25 голосов
/ 01 июня 2010

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 в ваш дистрибутив, потому что он имеет другую лицензию, и вы, вероятно, не имеете лицензии на его распространение

9 голосов
/ 02 ноября 2015

Вы можете установить 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

.

Do iisreset.

Источник

1 голос
/ 03 марта 2017

Я использовал 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
...