L'obtention de la PublicKeyToken de .Net assemblées
Quelle est la façon la plus simple de trouver les Clés Publiques-Jeton d'une assemblée?
Le moyen le plus simple je pense, serait un simple clic-droit, obtenir la clé publique, mais cette fonctionnalité n'est pas là, peut-être il est une Extension de Visual Studio pour qui?
Je suis en utilisant Visual Studio 2010, si une extension est disponible.
- Voir ce billet de blog de Kirk Evans comment obtenir PublicKeyToken d'une assemblée au sein de Visual Studio: blogs.msdn.com/b/kaevans/archive/2008/06/18/...
- À peine installé EF6 et honnêtement ne sais même pas où les assemblées sont situés. De la merde comme cela prend des heures de ma journée.
Vous devez vous connecter pour publier un commentaire.
Ouvrez une invite de commande et tapez les lignes suivantes, selon votre version de Visual Studio et de l'Architecture du Système d'Exploitation :
VS 2008 sur Windows 32 bits :
VS 2008 sur 64 bits de Windows :
VS 2010 sur Windows 32 bits :
VS 2010 sur 64 bits de Windows :
VS 2012 sur Windows 32 bits :
VS 2012 sur 64 bits de Windows :
VS 2015 sur 64 bits de Windows :
À noter que pour les versions VS2012+, sn.exe l'application n'est plus dans la corbeille, mais dans un sous-dossier. Notez également que pour les 64 bits, vous devez spécifier (x86) dossier.
Si vous préférez utiliser l'invite de commande Visual Studio, il suffit de taper :
où
<assemblyname>
est un chemin de fichier complet à l'assemblée qui vous intéresse, entouré par des guillemets si elle a des espaces.Vous pouvez l'ajouter comme un outil externe dans VS, comme illustré ici:
http://blogs.msdn.com/b/miah/archive/2008/02/19/visual-studio-tip-get-public-key-token-for-a-stong-named-assembly.aspx
"%ProgramFiles(x86)%\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\sn.exe" -T <assemblyname>
. Note sn est niché dans un dossier de niveau après le bac (en NETFX 4.0 Outils).une autre option:
si vous utiliser PowerShell, vous pouvez trouver comme:
comme
et apparaît comme
Si la bibliothèque est incluse dans le VS projet, vous pouvez vérifier
.cproj
fichier, par exemple:<Reference Include="System.Configuration" />
PublicKeyToken
, donc un coup d'oeil dans le.cproj
semble être la solution la plus simple.Si vous avez inclus le montage de votre projet, vous pouvez le faire :
AppDomain.CurrentDomain.GetAssemblies()
. Ce sera la liste de l'chargé assemblées dans la Fenêtre de la Version, de la Culture et de la PublicKeyToken pour chaque.Vous pouvez l'obtenir facilement via c#
typeof(YourPreferredTypeInThatAssembly).Assembly
ouAssembly.GetAssembly(typeof(YourPreferredTypeInThatAssembly))
et le passer à la méthode si vous le souhaitez.YourPreferredTypeInThatAssembly
serait le nom d'un type dans votre assemblée. Par exemple,typeof(System.Int32).Assembly
serait de retour un objet d'Assemblage pour Microsoftmscorlib
. Par exemple, sur mon pc l'objet de tirages "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".GetPublicKeyTokenFromAssembly(typeof(System.Int32).Assembly)
retourne"b77a5c561934e089"
.typeof
utilise le COMPILATEUR pour trouver le Type désiré, puis après qui est chargé lors de l'EXÉCUTION, l'assemblée peut être interrogé.Vous pouvez l'ajouter comme un outil externe pour Visual Studio comme suit:
Titre:
Commande:
(Chemin de peuvent différer entre les versions)
Arguments:
Et cocher la case "Utiliser la fenêtre de Sortie" option.
Tools
menu, il fonctionnera automatiquement sur n'importe quel Projet que vous avez sélectionné dans l'Explorateur de solutions.Get PublicKeyToken on Solution Explorer Selection
.Le moyen le plus simple pour moi est d'utiliser ILSpy.
Lorsque vous drag & drop l'assemblée sur sa fenêtre et sélectionnez le tombé de l'assemblée sur la gauche, vous pouvez voir le jeton de clé publique sur le côté droit de la fenêtre.
(Je pense aussi que les versions les plus récentes seront également l'affichage de la clé publique de signature, si jamais vous avez besoin que l'on... Voir ici: https://github.com/icsharpcode/ILSpy/issues/610#issuecomment-111189234. Bonnes choses! ;))
1) La commande est
C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\sn -T {your.dll}
Dans l'exemple ci-dessus, le kit de développement Microsoft réside dans C:\Program Files\Microsoft SDKs\Windows\v6.0A. Votre environnement peuvent différer.
2) Pour obtenir le jeton de clé publique de votre projet, vous pouvez ajouter sn.exe dans le cadre de vos Outils Externes dans Visual Studio. Les étapes sont illustrées dans la ce lien Microsoft: Comment faire: Créer un Outil pour Obtenir la Clé Publique d'une Assemblée
Comme alternative, vous pouvez également utiliser
linq
comme celui -.GetPublicKeyToken()
Au cas où quelqu'un était à la recherche pour l'assemblée Clé Publique (comme moi), pas le Jeton de Clé Publique - à l'aide de sn.exe fonctionne très bien, sauf que vous devez utiliser -Tp commutateur, qui sera de retour à la fois la Clé Publique et la Clé Publique de Jeton plus à https://msdn.microsoft.com/en-us/library/office/ee539398(v=office.14).aspx .
Une autre méthode serait si vous avez decompiler, il suffit de le rechercher là, ils ont l'habitude de fournir la clé publique. Je l'ai regardé .Net Réflecteur, Telerik Juste Décompiler et ILSpy juste décompiler ils semblent avoir le jeton de clé publique affiche.
Vous pouvez utiliser la Ildasm.exe (IL Désassembleur) pour examiner l'assemblée des métadonnées, qui contient le nom complet.
MSDN à l'adresse suivante:
https://msdn.microsoft.com/en-us/library/2exyydhb(v=vs. 110).aspx