où est gacutil.exe?

120

J'utilise Windows 7 Entreprise 32 bits. J'ai utilisé la ligne de commande Windows et également la ligne de commande VSTS 2008, mais lors de l'exécution de gacutil.exe, il y a une erreur de commande non trouvée.

Je me demande si je dois installer gacutil.exe de quelque part ou gacutil.exe se trouve ailleurs sur mon ordinateur (j'ai cherché sur mon ordinateur, mais j'ai trouvé plusieurs fichiers appelés gacutil.exe, je ne sais pas lequel doit être utilisé) ?

BTW: J'utilise .Net 3.5.

George2
la source
Voir ma réponse sur ... stackoverflow.com/questions/25154024/…
Dooie
Vous pouvez simplement prendre trois fichiers: gacutil.exe, gacutil.exe.configet à gacutlrc.dllpartir d' un PC où gacutilest déjà installé.
Ant_222

Réponses:

153

gacutil est fourni avec Visual Studio, pas avec VSTS. Il fait partie du SDK Windows et peut être téléchargé séparément sur adresse http://www.microsoft.com/downloads/details.aspx?FamilyId=F26B1AA4-741A-433A-9BE5-FA919850BDBF&displaylang=en . Cette installation aura gacutil.exeinclus. Mais vérifiez d'abord ici

C: \ Program Files \ Microsoft SDKs \ Windows \ v6.0A \ bin

vous l'avez peut-être installé.

Comme @devi l'a mentionné

Si vous décidez de récupérer des fichiers gacutil à partir d'une installation existante, notez qu'à partir de .NET 4.0, il y a trois fichiers: gacutil.exe gacutil.exe.config et 1033 / gacutlrc.dll

Andreï
la source
7
méfiez-vous "seulement" d'un concert en taille (le téléchargement)
roundcrisis
4
Voici le lien vers le téléchargement .NET 4.0: microsoft.com/en-gb/download/details.aspx?id=8279
Matt Wilko
10
si vous décidez de récupérer des fichiers gacutil à partir d'une installation existante, notez qu'à partir de .NET 4.0 se trouvent trois fichiers: gacutil.exe gacutil.exe.config et 1033 / gacutlrc.dll
gdbdable
8
Et bien sûr, avec la version 64 bits du système d'exploitation, le chemin est légèrement modifié, par exemple Windows 2012 Server, il se trouve sous C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.1A \ bin \ NETFX 4.5.1 Tools
Dijkgraaf
68
  1. Ouvrez l'invite de commande du développeur.
  2. type

où gacutil

Nikita
la source
Pourquoi cela a-t-il autant de votes positifs alors que la personne typique qui poserait cette question est celle qui doit la poser parce que ce n'est pas dans un chemin d'environnement: /
Thomas Harris
5

Vous pouvez utiliser la version dans le SDK Windows, mais parfois il peut ne pas s'agir de la même version du .NET Framework que vous utilisez, ce qui vous donne l'erreur suivante:

Utilitaire de cache d'assemblage global Microsoft (R) .NET. Version 3.5.21022.8 Copyright (c) Microsoft Corporation. Tous les droits sont réservés. Échec de l'ajout de l'assembly au cache: cet assembly est généré par un runtime plus récent que le runtime actuellement chargé et ne peut pas être chargé.

Dans .NET 4.0, vous devrez rechercher dans Microsoft SDK v8.0A, par exemple: C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0 Tools (dans mon cas, je n'ai que le Version 32 bits installée par Visual Studio 2012).

Tiago Dias
la source
2
Pourquoi Microsoft enterre-t-il cela dans un endroit aussi obscur? Mon Visual Studio 2010 avait un raccourci vers l'invite de commande, mais Visual Studio 2013 l'a, et il n'y a pas d'option de menu dans l'EDI (sous les outils, c'est là où je m'attendais) pour ouvrir l'invite de commande. On a l'impression que l'écosystème des développeurs Visual Studio est devenu une sorte de désordre.
Sam Goldberg
Mon instance de VS 2013 l'a dans Outils-> Invite de commandes Visual Studio. Regardez à nouveau. (Je n'aurais jamais pensé à regarder là-bas sans votre suggestion, alors merci; j'espère que cela vous aidera.)
Donald Locker
2

Sur Windows 2012 R2, vous ne pouvez pas installer Visual Studio ou SDK. Vous pouvez utiliser PowerShell pour enregistrer des assemblys dans GAC. Il n'a pas besoin d'installation spéciale pour moi.

Set-location "C:\Temp"
[System.Reflection.Assembly]::Load("System.EnterpriseServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")
$publish = New-Object System.EnterpriseServices.Internal.Publish
$publish.GacInstall("C:\Temp\myGacLibrary.dll")

Si vous avez besoin d'obtenir le nom et PublicKeyToken, consultez cette question.

ritikaadit2
la source