web-dev-qa-db-fra.com

C # comment enregistrer une assemblée dans le GAC sans GacUtil?

Je dois enregistrer une assemblée dans le GAC à l'aide d'un fichier de traitement par lots. Existe-t-il un moyen de trouver l'emplacement d'installation de GacUtil.exe ou existe-t-il un moyen d'enregistrer l'assembly sans GacUtil?

37
Benny F

GacUtil n'est pas installé avec une installation structurée uniquement avec une installation de SDK - vous ne pouvez donc pas garantir que ce serait sur la boîte sur laquelle vous installez. 

Cela ne fonctionnera pas dans votre fichier de commandes, mais si vous avez développé l'application vous-même, vous pouvez utiliser la méthode GacInstall décrite ci-dessous:
http://msdn.Microsoft.com/en-us/library/system.enterpriseservices.internal.publish.gacinstall.aspx

Sinon, je vous recommande de produire un fichier msi pour déployer l'application. Tutoriel ici:
http://www.dreamincode.net/forums/topic/58021-deploying-a-c%23-application-visual-studio-setup-project/

Il serait déconseillé d'inclure une copie de GacUtil.exe dans votre distribution, car celle-ci est sous une licence différente et vous n'êtes probablement pas autorisé à la redistribuer.

25
Rich

Votre meilleur résultat est d’utiliser un script PowerShell qui enveloppe Publish.GacInstall , tel que this celui

25
David Reis

Vous pouvez installer une dll dans le GAC (Global Assembly Cache) en procédant comme suit:

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

Cela a très peu à voir avec PowerShell natif, mais plutôt avec l’instanciation et l’utilisation des bibliothèques .NET de PowerShell.

Faites une iisreset.

La source

9
kamalpreet

J'ai utilisé InnoSetup et créé une installation comprenant mon assemblage.

La ligne importante est comme ci-dessous:

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
0
Carol