[.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 , Culture 및 PublicKeyToken 을 제공합니다 .
MyDLL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a
답변
답변
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\assembly
GAC 어셈블리 목록에서 쉽게 찾을 수 있습니다.
특정 경우에 어셈블리 이름과 형식 이름을 혼합하는 경우 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에 있습니다.