2009-11-10 10 views
112

Ho bisogno di ricreare un fornitore nel mio file web.config che sembra qualcosa di simile:Come trovo il PublicKeyToken per una particolare dll?

<membership defaultProvider="AspNetSqlMemProvider"> 
    <providers> 
    <clear/> 
    <add connectionStringName="TRAQDBConnectionString" applicationName="TRAQ" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="0" 
     name="AspNetSqlMemProvider" 
     type="System.Web.Security.SqlMembershipProvider, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" 
    /> 
    </providers> 
</membership> 

Tuttavia, ottengo un errore di runtime dicendo questa assemblea non può essere caricato, e penso che sia perché ho la wrong PublicKeyToken. Come posso visualizzare PublicKeyToken per il mio assembly?

In alternativa, sto andando completamente nel modo sbagliato con questo?

+0

Possibile duplicato [Ottenere il PublicKeyToken di assembly .NET] (http://stackoverflow.com/questions/3045033/getting-the-publickeytoken-of-net-assemblies) –

risposta

139

Utilizzando PowerShell, è possibile eseguire questa affermazione:

([system.reflection.assembly]::loadfile("c:\MyDLL.dll")).FullName

L'uscita fornirà la versione, cultura e PublicKeyToken come illustrato di seguito:

MyDLL, Version = 1.0.0.0, Culture = neutro, PublicKeyToken = 669e0ddf0bb1aa2a

+1

Grazie! il tuo metodo è l'unico che ha funzionato per me sn -T dllname.dll mostrava solo il testo della guida quando l'ho eseguito – Vdex

+0

Questo è perfetto! Evita l'installazione di strumenti aggiuntivi. – nirav

+1

Ora questa è una buona soluzione! –

18

sn -T <assembly> nella riga di comando di Visual Studio. Se un assembly è installato nella cache di assembly globale, è più semplice andare su C:\Windows\assembly e trovarlo nell'elenco di assembly GAC.

Nel caso specifico, è possibile che si stia mescolando il nome completo del tipo con riferimento all'assembly, si potrebbe dare un'occhiata a MSDN.

118

Uso sn.exe utilità:

sn -T YourAssembly.dll 

o caricare il gruppo in Reflector.

+27

sn.exe in genere può essere trovato in uno dei seguenti percorsi in C: \ Programmi (x86) \ Microsoft SDK \ Windows: C: \ Programmi (x86) \ Microsoft SDK \ Windows \ v7.0A \ Bin, C: \ Programmi (x86) \ Microsoft SDK \ Windows \ v7.0A \ Bin \ x64, C: \ Programmi (x86) \ Microsoft SDK \ Windows \ v8.0A \ bin \ NETFX 4.0 Strumenti –

4

Answer è molto semplice utilizzare gli strumenti .NET Framework sn.exe. Quindi aprire il Visual Studio 2008 prompt dei comandi e quindi scegliere la cartella del dll che si desidera ottenere la chiave pubblica,

Utilizzare il seguente comando,

sn –T myDLL.dll

Questo vi darà il token di chiave pubblica. Ricorda una cosa che funziona solo se l'assemblea deve essere fortemente firmata.

Esempio

C:\WINNT\Microsoft.NET\Framework\v3.5>sn -T EdmGen.exe 

Microsoft (R) .NET Framework Strong Name Utility Version 3.5.21022.8 
Copyright (c) Microsoft Corporation. All rights reserved. 

Public key token is b77a5c561934e089
+0

Se si dispone di Visual Studio 2013 e non è possibile trovare " Prompt dei comandi dello sviluppatore per VS2013 "Dai un'occhiata qui su come risolverlo: http://stackoverflow.com/a/22702405/187650 – juFo

0

È inoltre possibile controllare seguendo il metodo.

Vai a Esegui: digitare il percorso della DLL per cui è necessaria la chiave pubblica. Troverete 2 file: 1. __AssemblyInfo_.ini 2. DLL file

Aprire questo file __AssemblyInfo_.ini nel blocco note, qui si può vedere Public Key Token.

1

Solo aggiungendo ulteriori informazioni, non ero in grado di trovare l'utilità sn.exe nelle posizioni menzionate, nel mio caso era in C: \ Programmi (x86) \ Microsoft SDK \ Windows \ v7.0A \ bin

+0

Se apri un prompt dei comandi di Visual Studio dovrebbe essere sul tuo percorso. – Nattrass

+0

Controlla questo: http://stackoverflow.com/questions/3045033/getting-the-publickeytoken-of-net-assemblies –

3

Uso Windows Explorer, vai a C: \ Windows \ assembly, trova quello che mi serve. Dalle Proprietà è possibile copiare PublicKeyToken.

Questo non si basa su Visual Studio o altre utilità installate.

7

Se la DLL è stata aggiunta al progetto, è possibile aprire il file csproj e visualizzare il tag di riferimento.

Esempio:

<Reference Include="System.Web.Mvc, Version=3.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" /> 
0

Assembly.LoadFile. (@ "C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ system.data.dll") FullName

si tradurrà in

System.Data, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089