2010-06-01 15 views
37

Necesito registrar un ensamblaje en el GAC utilizando el archivo por lotes. ¿Hay alguna manera de encontrar la ubicación de instalación de GacUtil.exe o hay una forma de registrar el ensamblaje sin GacUtil?C# cómo registrar el ensamblaje en el GAC sin GacUtil?

+0

http://stackoverflow.com/a/2611435/17034 –

Respuesta

25

GacUtil no está instalado con una instalación de infraestructura solo con una instalación de SDK, por lo que no podría garantizar que esté en la caja en la que está instalando.

esto no va a trabajar dentro de su archivo por lotes, pero si usted ha desarrollado su propia aplicación puede utilizar el método GacInstall se describe a continuación:
http://msdn.microsoft.com/en-us/library/system.enterpriseservices.internal.publish.gacinstall.aspx

Alternativamente se lo recomiendo producir un archivo MSI para implementar la aplicación . Tutorial aquí:
http://www.dreamincode.net/forums/topic/58021-deploying-a-c%23-application-visual-studio-setup-project/

Sería una solución aconsejable incluir una copia de Gacutil.exe en su distribución, ya que viene con una licencia diferente y es probable que no tienen licencia para redistribuirlo

25

Su BestBet se utilizar un script de PowerShell que envuelve Publish.GacInstall, como this one

+0

1: WOW! Estas respuestas particulares deben ser aceptadas, porque dan una respuesta directa a la pregunta superior. ** La fuerza está contigo. ** –

7

Es posible instalar un archivo DLL en el GAC (caché de ensamblados global) de la siguiente manera

[Reflection.Assembly]::LoadWithPartialName("System.EnterpriseServices") | Out-Null 
[System.EnterpriseServices.Internal.Publish] $publish = new-object System.EnterpriseServices.Internal.Publish 
$publish.GacInstall(<<FullFilePathToTheDll>>) 

Esto tiene que ver muy poco con PowerShell nativo, sino con crear instancias y usar bibliotecas .NET de PowerShell

Hacer un iisreset.

Source

0

que utilizan InnoSetup y creó una instalación incluida mi montaje.

La línea importante es, como a continuación:

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 
Cuestiones relacionadas