2009-11-10 11 views
112

muszę odtworzyć dostawcy w moim pliku web.config, który wygląda mniej więcej tak:Jak znaleźć klucz PublicKeyToken dla określonej biblioteki 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> 

Jednakże, otrzymuję błąd wykonania mówiąc to zespół nie może być załadowany, i myślę, że to dlatego, że mam nieprawidłowy klucz publiczny. Jak wyszukać znacznik PublicKey dla mojego zespołu?

Alternatywnie, czy jestem całkowicie niewłaściwy z tym?

+0

Możliwe duplikat [Pierwsze TokenKluczaPublicznego zespołów Net] (http://stackoverflow.com/questions/3045033/getting-the-publickeytoken-of-net-assemblies) –

Odpowiedz

139

Korzystanie PowerShell, można wykonać to oświadczenie:

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

Wyjście zapewni Version, kultura i TokenKluczaPublicznego jak pokazano poniżej:

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

+1

Dzięki! Twoja metoda jest jedyną, która działała dla mnie sn -T dllname.dll wyświetlałby tekst pomocy tylko wtedy, gdy go uruchomiłem. – Vdex

+0

To jest idealne! Unika instalacji dodatkowych narzędzi. – nirav

+1

Teraz TO jest dobre rozwiązanie! –

18

sn -T <assembly> w wierszu poleceń programu Visual Studio. Jeśli w pamięci podręcznej montażu globalnego jest zainstalowany zespół, łatwiej jest przejść do C:\Windows\assembly i znaleźć go na liście zestawów GAC.

W konkretnym przypadku może występować mieszanie pełnej nazwy typu z odniesieniem do zespołu, dlatego warto przyjrzeć się MSDN.

118

Stosując sn.exe użytkowy:

sn -T YourAssembly.dll 

lub ładowania podzespół Reflector.

+27

sn.exe można zazwyczaj znaleźć w jednej z następujących lokalizacji w C: \ Program Files (x86) \ Microsoft SDK \ Windows: C: \ Program Files (x86) \ Microsoft SDK \ Windows \ v7.0A \ Bin, C: \ Program Files (x86) \ Microsoft SDK \ Windows \ v7.0A \ Bin \ x64, C: \ Program Files (x86) \ Microsoft SDK \ Windows \ v8.0A \ bin \ NETFX 4.0 Narzędzia –

4

Odpowiedź jest bardzo prosta dzięki narzędziom .NET Framework sn.exe. Więc otwórz Visual Studio 2008 Wiersz polecenia, a następnie wskaż folderu DLL chcesz otrzymać klucz publiczny,

użyć następującego polecenia,

sn –T myDLL.dll

To daje znak klucza publicznego. Zapamiętaj jedną rzecz, która działa tylko wtedy, gdy zespół musi być mocno podpisany.

Przykład

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

Jeśli masz Visual Studio 2013 i nie możesz znaleźć " Developer Command Prompt for VS2013 "zajrzyj tutaj, jak to naprawić: http://stackoverflow.com/a/22702405/187650 – juFo

0

Można również sprawdzić, wykonując następujące metody.

Przejdź do Uruchom: wpisz ścieżkę do biblioteki DLL, dla której potrzebujesz klucza publicznego. Znajdziecie 2 pliki: 1. __AssemblyInfo_.ini 2. plik DLL

Otwórz ten plik __AssemblyInfo_.ini w notatniku, tutaj można zobaczyć Public Key Token.

1

Po prostu dodając więcej informacji, nie znalazłem narzędzia sn.exe w wymienionych lokalizacjach, w moim przypadku było to w C: \ Program Files (x86) \ Microsoft SDK \ Windows \ v7.0A \ bin

+0

Po otwarciu wiersza polecenia programu visual studio powinno znajdować się ono na twojej ścieżce. – Nattrass

+0

Sprawdź to: http://stackoverflow.com/questions/3045033/getting-the-publickeytoken-of-net-ssembly –

3

Używam Eksploratora Windows, przejdź do C: \ Windows \ Assembly, znajdź to, czego potrzebuję. Z Właściwości można skopiować klucz PublicKeyToken.

Nie dotyczy to programu Visual Studio ani innych zainstalowanych narzędzi.

7

Jeśli masz bibliotekę DLL dodaną do projektu, możesz otworzyć plik csproj i wyświetlić tag Odnośnik.

przykład:

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

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

spowoduje

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