C # come registrare l’assembly nel GAC senza GacUtil?

Devo registrare un assembly nel GAC usando il file batch. C’è un modo per trovare il percorso di installazione di GacUtil.exe o c’è un modo per registrare l’assembly senza GacUtil?

GacUtil non è installato con un’installazione di framework solo con un’installazione di SDK, quindi non è ansible garantire che si trovi sulla scatola su cui si sta installando.

Questo non funzionerà nel tuo file batch, ma se hai sviluppato l’applicazione tu stesso puoi utilizzare il metodo GacInstall descritto di seguito:
http://msdn.microsoft.com/en-us/library/system.enterpriseservices.internal.publish.gacinstall.aspx

In alternativa, consiglierei di produrre un file msi per distribuire l’applicazione. Tutorial qui:
http://www.dreamincode.net/forums/topic/58021-deploying-ac%23-application-visual-studio-setup-project/

Sarebbe una soluzione sconsigliabile includere una copia di GacUtil.exe nella distribuzione perché è disponibile con una licenza diversa e probabilmente non hai la licenza per ridistribuirla

La tua bestbet è di usare uno script PowerShell che avvolge Publish.GacInstall , come questo

È ansible installare una DLL nella GAC ​​(Global Assembly Cache) procedendo come segue

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

Questo deve fare ben poco con PowerShell nativo, ma piuttosto con la creazione di istanze e l’uso di librerie .NET da PowerShell

Fai un iisreset .

fonte

Ho usato InnoSetup e ho creato un’installazione che includeva il mio assembly.

La linea importante è come di seguito:

 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