[.net] 특정 dll에 대한 PublicKeyToken을 어떻게 찾을 수 있습니까?

web.config 파일에서 다음과 같은 공급자를 다시 만들어야합니다.

<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>

그러나이 어셈블리를로드 할 수 없다는 런타임 오류가 발생하며 잘못된 PublicKeyToken이 있기 때문이라고 생각합니다. 어셈블리에 대한 PublicKeyToken을 어떻게 조회합니까?

대안으로, 나는 이것으로 완전히 잘못 가고 있습니까?



답변

PowerShell을 사용하면 다음 명령문을 실행할 수 있습니다.

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

출력은 아래와 같이 Version , CulturePublicKeyToken 을 제공합니다 .

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


답변

sn.exe 유틸리티 사용 :

sn -T YourAssembly.dll

또는 Reflector에 어셈블리로드 .


답변

DLL을 프로젝트에 추가 한 경우 csproj 파일을 열고 참조 태그를 볼 수 있습니다.

예:

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


답변

sn -T <assembly>Visual Studio 명령 줄에서. 전역 어셈블리 캐시에 어셈블리가 설치되어 있으면 C:\Windows\assemblyGAC 어셈블리 목록에서 쉽게 찾을 수 있습니다.

특정 경우에 어셈블리 이름과 형식 이름을 혼합하는 경우 MSDN을 살펴볼 수 있습니다 .


답변

대답은 .NET Framework 도구를 사용하는 것이 매우 간단합니다 sn.exe. Visual Studio 2008 명령 프롬프트를 연 다음 공개 키를 얻으려는 dll 폴더를 가리키고,

다음 명령을 사용하십시오

sn –T myDLL.dll

공개 키 토큰이 제공됩니다. 어셈블리에 강력하게 서명해야하는 경우에만 작동합니다.

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

Microsoft (R) .NET Framework 강력한 이름 유틸리티 버전 3.5.21022.8
저작권 (c) Microsoft Corporation. 판권 소유.

공개 키 토큰은 b77a5c561934e089입니다.


답변

Windows 탐색기를 사용하고 C : \ Windows \ assembly로 이동하여 필요한 것을 찾으십시오. 속성에서 PublicKeyToken을 복사 할 수 있습니다.

이것은 Visual Studio 또는 설치되는 다른 유틸리티에 의존하지 않습니다.


답변

더 많은 정보를 추가하면 언급 한 위치에서 sn.exe 유틸리티를 찾을 수 없었습니다. 제 경우에는 C : \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ bin에 있습니다.