Was ist der einfachste Weg, um das Public-Key-Token einer Assembly zu finden?
Der einfachste Weg, den ich mir vorstellen kann, wäre ein einfacher Rechtsklick auf den öffentlichen Schlüssel, aber diese Funktionalität ist nicht vorhanden. Vielleicht gibt es dafür eine Visual Studio-Erweiterung?
Ich verwende Visual Studio 2010, wenn eine Erweiterung verfügbar ist.
.net
visual-studio
visual-studio-2010
public-key
moi_meme
quelle
quelle
Antworten:
Öffnen Sie eine Eingabeaufforderung und geben Sie eine der folgenden Zeilen entsprechend Ihrer Visual Studio-Version und Betriebssystemarchitektur ein:
VS 2008 unter 32-Bit-Windows :
VS 2008 unter 64-Bit-Windows:
VS 2010 unter 32-Bit-Windows:
VS 2010 unter 64-Bit-Windows:
VS 2012 unter 32-Bit-Windows:
VS 2012 unter 64-Bit-Windows:
VS 2015 unter 64-Bit-Windows:
Beachten Sie, dass für die Versionen VS2012 + die Anwendung sn.exe nicht mehr in bin, sondern in einem Unterordner vorhanden ist. Beachten Sie außerdem, dass Sie für 64-Bit den Ordner (x86) angeben müssen.
Wenn Sie die Visual Studio-Eingabeaufforderung bevorzugen, geben Sie einfach Folgendes ein:
Wo
<assemblyname>
ist ein vollständiger Dateipfad zu der Assembly, an der Sie interessiert sind, umgeben von Anführungszeichen, wenn sie Leerzeichen enthält.Sie können dies als externes Tool in VS hinzufügen, wie hier gezeigt:
http://blogs.msdn.com/b/miah/archive/2008/02/19/visual-studio-tip-get-public-key-token -für-einen-starken-benannten-Assembly.aspx
quelle
"%ProgramFiles(x86)%\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\sn.exe" -T <assemblyname>
. Hinweis sn befindet sich in einer zusätzlichen Ordnerebene nach bin (in NETFX 4.0 Tools).andere Option:
Wenn Sie PowerShell verwenden, können Sie Folgendes herausfinden:
mögen
und wird wie aussehen
quelle
Wenn die Bibliothek im VS-Projekt enthalten ist, können Sie die
.cproj
Datei überprüfen , z.quelle
<Reference Include="System.Configuration" />
PublicKeyToken
, so dass ein Blick in die.cproj
scheinbar einfachste Lösung ist.Wenn Sie die Baugruppe in Ihr Projekt aufgenommen haben, können Sie Folgendes tun:
quelle
AppDomain.CurrentDomain.GetAssemblies()
. Dadurch werden die geladenen Assemblys im Direktfenster mit Version, Kultur und PublicKeyToken aufgelistet.Sie können dies einfach über c # erhalten
quelle
typeof(YourPreferredTypeInThatAssembly).Assembly
oderAssembly.GetAssembly(typeof(YourPreferredTypeInThatAssembly))
und übergeben das an die Methode, wenn Sie möchten.Sie können dies als externes Tool zu Visual Studio hinzufügen:
Titel:
Befehl:
(Pfad kann zwischen Versionen unterschiedlich sein)
Argumente:
Aktivieren Sie die Option " Ausgabefenster verwenden ".
quelle
Tools
Menü auswählen , wird es automatisch für jedes Projekt ausgeführt, das Sie im Projektmappen-Explorer ausgewählt haben.Get PublicKeyToken on Solution Explorer Selection
.Der einfachste Weg für mich ist die Verwendung von ILSpy .
Wenn Sie die Baugruppe per Drag & Drop in das Fenster ziehen und links die abgelegte Baugruppe auswählen, wird das Token für den öffentlichen Schlüssel auf der rechten Seite des Fensters angezeigt.
(Ich denke auch, dass die neueren Versionen auch den öffentlichen Schlüssel der Signatur anzeigen, falls Sie diesen jemals benötigen ... Siehe hier: https://github.com/icsharpcode/ILSpy/issues/610#issuecomment-111189234 . Gutes Zeug! ;))
quelle
1) Der Befehl lautet
C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\sn -T {your.dll}
Im obigen Beispiel befindet sich das Microsoft SDK in C: \ Programme \ Microsoft SDKs \ Windows \ v6.0A. Ihre Umgebung kann unterschiedlich sein.
2) Um das öffentliche Schlüssel-Token eines Ihrer Projekte abzurufen, können Sie sn.exe als Teil Ihrer externen Tools in Visual Studio hinzufügen. Die Schritte werden in diesem Microsoft-Link gezeigt: Gewusst wie: Erstellen eines Tools zum Abrufen des öffentlichen Schlüssels einer Assembly
quelle
Falls jemand nach dem öffentlichen Schlüssel der Assembly gesucht hat (wie ich), funktioniert nicht das Token für den öffentlichen Schlüssel - die Verwendung von sn.exe funktioniert hervorragend, außer dass Sie den Schalter -Tp verwenden müssen , der sowohl den Token für den öffentlichen Schlüssel als auch den Token für den öffentlichen Schlüssel zurückgibt - mehr unter https://msdn.microsoft.com/en-us/library/office/ee539398(v=office.14).aspx .
quelle
Alternativ können Sie auch so verwenden
linq
-quelle
.GetPublicKeyToken()
Eine alternative Methode wäre, wenn Sie einen Dekompiler haben, schauen Sie einfach dort nach, sie liefern normalerweise den öffentlichen Schlüssel. Ich habe mir .Net Reflector, Telerik Just Decompile und ILSpy Just Decompile angesehen, bei denen anscheinend das Token für den öffentlichen Schlüssel angezeigt wird.
quelle
Eine weitere Möglichkeit ist die Verwendung des Open-Source-Tools NuGet Package Explorer .
Aus einem Nuget-Paket (.nupkg) können Sie das PublicKeyToken überprüfen oder die Binärdatei (.dll) in das Tool ziehen. Für letztere wählen Sie zuerst "Datei -> neu"
quelle
Mit Ildasm.exe (IL Disassembler) können Sie die Metadaten der Assembly untersuchen, die den vollständig qualifizierten Namen enthalten.
Folgende MSDN: https://msdn.microsoft.com/en-us/library/2exyydhb(v=vs.110).aspx
quelle