어셈블리의 공개 키 토큰을 찾는 가장 간단한 방법은 무엇입니까?
내가 생각할 수있는 가장 간단한 방법은 마우스 오른쪽 버튼을 클릭하고 공개 키를 얻는 것입니다.하지만이 기능이 없습니다. 아마도 Visual Studio Extension이 있습니까?
확장 프로그램을 사용할 수 있으면 Visual Studio 2010을 사용하고 있습니다.
어셈블리의 공개 키 토큰을 찾는 가장 간단한 방법은 무엇입니까?
내가 생각할 수있는 가장 간단한 방법은 마우스 오른쪽 버튼을 클릭하고 공개 키를 얻는 것입니다.하지만이 기능이 없습니다. 아마도 Visual Studio Extension이 있습니까?
확장 프로그램을 사용할 수 있으면 Visual Studio 2010을 사용하고 있습니다.
답변:
명령 프롬프트를 열고 Visual Studio 버전 및 운영 체제 아키텍처에 따라 다음 줄 중 하나를 입력하십시오.
32 비트 Windows에서 VS 2008 :
"%ProgramFiles%\Microsoft SDKs\Windows\v6.0A\bin\sn.exe" -T <assemblyname>
64 비트 Windows의 VS 2008 :
"%ProgramFiles(x86)%\Microsoft SDKs\Windows\v6.0A\bin\sn.exe" -T <assemblyname>
32 비트 Windows에서 VS 2010 :
"%ProgramFiles%\Microsoft SDKs\Windows\v7.0A\bin\sn.exe" -T <assemblyname>
64 비트 Windows에서 VS 2010 :
"%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.0A\bin\sn.exe" -T <assemblyname>
32 비트 Windows에서 VS 2012 :
"%ProgramFiles%\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\sn.exe" -T <assemblyname>
64 비트 Windows에서 VS 2012 :
"%ProgramFiles(x86)%\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\sn.exe" -T <assemblyname>
64 비트 Windows에서 VS 2015 :
"%ProgramFiles(x86)%\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\sn.exe" -T <assemblyname>
버전 VS2012 +의 경우 sn.exe 응용 프로그램은 더 이상 저장소가 아니라 하위 폴더에 있습니다. 또한 64 비트의 경우 (x86) 폴더를 지정해야합니다.
Visual Studio 명령 프롬프트를 사용하려면 다음을 입력하십시오.
sn -T <assembly>
어디 <assemblyname>
관심이있는 어셈블리의 전체 파일 경로이며 공백이 있으면 따옴표로 묶습니다.
다음과 같이 VS에서 외부 도구로 추가 할 수 있습니다 :
http://blogs.msdn.com/b/miah/archive/2008/02/19/visual-studio-tip-get-public-key-token -s-a-stong-named-assembly.aspx
"%ProgramFiles(x86)%\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\sn.exe" -T <assemblyname>
있습니다. 참고 sn은 bin (NETFX 4.0 도구) 다음에 하나의 추가 폴더 레벨에 고정됩니다.
다른 옵션 :
PowerShell을 사용하면 다음과 같은 내용을 알 수 있습니다.
PS C:\Users\Pravat> ([system.reflection.assembly]::loadfile("C:\Program Files (x86)\MySQL\Connector NET 6.6.5\Assemblies\v4.0\MySql.Data.dll")).FullName
처럼
PS C:\Users\Pravat> ([system.reflection.assembly]::loadfile("dll full path")).FullName
와 같이 나타납니다
MySql.Data, 버전 = 6.6.5.0, Culture = neutral, PublicKeyToken = c5687fc88969c44d
라이브러리가 VS 프로젝트에 포함 된 경우 .cproj
파일 을 확인할 수 있습니다 ( 예 :
<ItemGroup>
<Reference Include="Microsoft.Dynamic, Version=1.1.0.20, Culture=neutral, PublicKeyToken=7f709c5b713576e1, processorArchitecture=MSIL">
...
<Reference Include="System.Configuration" />
PublicKeyToken
보이므로 하나를 찾는 .cproj
것이 가장 쉬운 솔루션 인 것 같습니다.
프로젝트에 어셈블리를 포함시킨 경우 다음을 수행 할 수 있습니다.
var assemblies =
AppDomain.CurrentDomain.GetAssemblies();
foreach (var assem in assemblies)
{
Console.WriteLine(assem.FullName);
}
AppDomain.CurrentDomain.GetAssemblies()
. 그러면 직접 창에로드 된 어셈블리와 버전, Culture 및 PublicKeyToken이 나열됩니다.
C #을 통해 쉽게 얻을 수 있습니다.
private static string GetPublicKeyTokenFromAssembly(Assembly assembly)
{
var bytes = assembly.GetName().GetPublicKeyToken();
if (bytes == null || bytes.Length == 0)
return "None";
var publicKeyToken = string.Empty;
for (int i = 0; i < bytes.GetLength(0); i++)
publicKeyToken += string.Format("{0:x2}", bytes[i]);
return publicKeyToken;
}
typeof(YourPreferredTypeInThatAssembly).Assembly
또는 Assembly.GetAssembly(typeof(YourPreferredTypeInThatAssembly))
당신이 좋아하는 경우에 방법에 그것을 전달합니다.
다음과 같이이를 Visual Studio에 외부 도구로 추가 할 수 있습니다.
표제:
Get PublicKeyToken
명령:
c:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\sn.exe
(버전마다 경로가 다를 수 있음)
인수 :
-T "$(TargetPath)"
" 출력 창 사용 "옵션을 확인하십시오 .
Tools
메뉴가 자동으로 프로젝트 당신이 솔루션 탐색기에서 선택한 무엇에 작동합니다.
Get PublicKeyToken on Solution Explorer Selection
.
가장 간단한 방법은 ILSpy 를 사용하는 것 입니다.
창에서 어셈블리를 끌어다 놓고 왼쪽에서 삭제 된 어셈블리를 선택하면 창의 오른쪽에 공개 키 토큰이 표시됩니다.
(필요한 경우 최신 버전도 서명의 공개 키를 표시한다고 생각합니다 . 여기를 참조하십시오 : https://github.com/icsharpcode/ILSpy/issues/610#issuecomment-111189234 . 좋은 물건!;))
1) 명령은 C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\sn -T {your.dll}
위 예제에서 Microsoft SDK는 C : \ Program Files \ Microsoft SDKs \ Windows \ v6.0A에 있습니다. 환경이 다를 수 있습니다.
2) 프로젝트의 공개 키 토큰을 얻으려면 Visual Studio에서 외부 도구의 일부로 sn.exe를 추가 할 수 있습니다. 단계는 이 Microsoft 링크에 표시됩니다 . 방법 : 어셈블리의 공개 키를 가져 오는 도구 만들기
누군가 공개 키 (예 : 나와 같은)를 찾고있는 경우 공개 키 토큰이 아닌 - 공개 키 토큰과 공개 키 토큰을 모두 반환하는 -Tp 스위치 를 사용해야하는 경우를 제외하고 sn.exe를 사용하는 것이 좋습니다. 에서 https://msdn.microsoft.com/en-us/library/office/ee539398(v=office.14).aspx .
다른 방법은 디 컴파일러가있는 경우 찾아 보면 일반적으로 공개 키를 제공하는 것입니다. .Net Reflector, Telerik Just Decompile 및 ILSpy를 살펴보면 공개 키 토큰이 표시된 것처럼 보입니다.
또 다른 옵션은 오픈 소스 도구 인 NuGet Package Explorer 를 사용하는 것입니다.
Nuget 패키지 (.nupkg)에서 PublicKeyToken을 확인하거나 도구에서 이진 (.dll)을 드래그 할 수 있습니다. 후자를 위해 먼저 "파일-> 새"를 선택하십시오.
Ildasm.exe (IL 디스어셈블러)를 사용하여 정규화 된 이름이 포함 된 어셈블리의 메타 데이터를 검사 할 수 있습니다.
다음 MSDN : https://msdn.microsoft.com/en-us/library/2exyydhb(v=vs.110).aspx