.Net 어셈블리의 PublicKeyToken 얻기
어셈블리의 공개 키 토큰을 찾는 가장 간단한 방법은 무엇입니까?
내가 생각할 수있는 가장 간단한 방법은 마우스 오른쪽 버튼을 클릭하고 공개 키를 얻는 것입니다. 그러나이 기능은 없습니다. 아마도 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
다른 옵션 :
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">
...
프로젝트에 어셈블리를 포함시킨 경우 다음을 수행 할 수 있습니다.
var assemblies =
AppDomain.CurrentDomain.GetAssemblies();
foreach (var assem in assemblies)
{
Console.WriteLine(assem.FullName);
}
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;
}
다음과 같이이를 Visual Studio에 외부 도구로 추가 할 수 있습니다.
표제:
Get PublicKeyToken
명령:
c:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\sn.exe
(버전마다 경로가 다를 수 있음)
인수 :
-T "$(TargetPath)"
And check the "Use Output window" option.
The simplest way for me is to use ILSpy.
When you drag & drop the assembly on its window and select the dropped assembly on the the left, you can see the public key token on the right side of the window.
(I also think that the newer versions will also display the public key of the signature, if you ever need that one... See here: https://github.com/icsharpcode/ILSpy/issues/610#issuecomment-111189234. Good stuff! ;))
1) The command is C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\sn -T {your.dll}
In the above example, the Microsoft SDK resides in C:\Program Files\Microsoft SDKs\Windows\v6.0A. Your environment may differ.
2) To get the public key token of any of your project, you can add sn.exe as part of your External Tools in Visual Studio. The steps are shown in this Microsoft link: How to: Create a Tool to Get the Public Key of an Assembly
As an alternative, you can also use linq
like this -
string key = string.Join ("",assembly
.GetName()
.GetPublicKeyToken()
.Select (b => b.ToString ("x2")));
In case someone was looking for the assembly Public Key (like me), not the Public Key Token - using sn.exe works great, except you have to use -Tp switch, which will return both the Public Key and Public Key Token - more at https://msdn.microsoft.com/en-us/library/office/ee539398(v=office.14).aspx .
An alternate method would be if you have decompiler, just look it up in there, they usually provide the public key. I have looked at .Net Reflector, Telerik Just Decompile and ILSpy just decompile they seem to have the public key token displayed.
You can use the Ildasm.exe (IL Disassembler) to examine the assembly's metadata, which contains the fully qualified name.
Following MSDN: https://msdn.microsoft.com/en-us/library/2exyydhb(v=vs.110).aspx
참고URL : https://stackoverflow.com/questions/3045033/getting-the-publickeytoken-of-net-assemblies
'Programing' 카테고리의 다른 글
ACID 및 데이터베이스 트랜잭션은 어떻게 작동합니까? (0) | 2020.06.10 |
---|---|
콘텐츠에는 id 속성이 'android.R.id.list'인 ListView가 있어야합니다. (0) | 2020.06.10 |
저자를 변경하기 위해 Git에서 여러 커밋을 수정하는 방법 (0) | 2020.06.10 |
장고 클래스 기반 뷰에서 permission_required 데코레이터를 사용하는 방법 (0) | 2020.06.10 |
ASP.NET MVC에서 View Model을 JSON 객체로 변환하는 방법은 무엇입니까? (0) | 2020.06.10 |