Apa cara paling sederhana untuk menemukan Public-Key-Token dari sebuah majelis?
Cara paling sederhana yang dapat saya pikirkan adalah klik kanan sederhana, dapatkan kunci publik, tetapi fungsi ini tidak ada, mungkin ada Visual Studio Extension untuk itu?
Saya menggunakan Visual Studio 2010, jika ekstensi tersedia.
.net
visual-studio
visual-studio-2010
public-key
moi_meme
sumber
sumber
Jawaban:
Buka prompt perintah dan ketik salah satu baris berikut sesuai dengan versi Visual Studio dan Arsitektur Sistem Operasi Anda:
VS 2008 pada Windows 32bit :
VS 2008 pada Windows 64bit:
VS 2010 pada Windows 32bit:
VS 2010 pada Windows 64bit:
VS 2012 pada Windows 32bit:
VS 2012 pada Windows 64bit:
VS 2015 pada Windows 64bit:
Perhatikan bahwa untuk versi VS2012 +, aplikasi sn.exe tidak lagi di dalam bin, tetapi di dalam sub-folder. Juga, perhatikan bahwa untuk 64bit Anda perlu menentukan (x86) folder.
Jika Anda lebih suka menggunakan prompt perintah Visual Studio, cukup ketik:
di mana
<assemblyname>
path file lengkap ke majelis yang Anda minati, dikelilingi oleh tanda kutip jika memiliki spasi.Anda dapat menambahkan ini sebagai alat eksternal dalam VS, seperti yang ditunjukkan di sini:
http://blogs.msdn.com/b/miah/archive/2008/02/19/visual-studio-tip-get-public-key-token -untuk-stong-bernama-assembly.aspx
sumber
"%ProgramFiles(x86)%\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\sn.exe" -T <assemblyname>
. Catatan sn terselip di satu tingkat folder tambahan setelah nampan (di NETFX 4.0 Tools).pilihan lain:
jika Anda menggunakan PowerShell, Anda bisa mengetahuinya seperti:
Suka
dan akan muncul seperti
sumber
Jika perpustakaan termasuk dalam proyek VS, Anda dapat memeriksa
.cproj
file, misalnya:sumber
<Reference Include="System.Configuration" />
PublicKeyToken
, jadi orang mencari.cproj
solusi yang paling mudah.Jika Anda sudah memasukkan perakitan dalam proyek Anda, Anda dapat melakukan:
sumber
AppDomain.CurrentDomain.GetAssemblies()
. Ini akan mencantumkan majelis yang dimuat di Jendela Segera, dengan Versi, Budaya, dan PublicKeyToken untuk masing-masingnya.Anda bisa mendapatkan ini dengan mudah melalui c #
sumber
typeof(YourPreferredTypeInThatAssembly).Assembly
atauAssembly.GetAssembly(typeof(YourPreferredTypeInThatAssembly))
dan meneruskannya ke metode jika Anda mau.Anda dapat menambahkan ini sebagai alat eksternal ke Visual Studio seperti:
Judul:
Perintah:
(Path mungkin berbeda di antara versi)
Argumen:
Dan periksa " Use Output window ".
sumber
Tools
menu, itu akan secara otomatis beroperasi pada Proyek apa pun yang Anda pilih di Solution Explorer.Get PublicKeyToken on Solution Explorer Selection
.Cara paling sederhana bagi saya adalah menggunakan ILSpy .
Saat Anda menarik & melepas unit di jendelanya dan memilih unit yang dijatuhkan di sebelah kiri, Anda dapat melihat token kunci publik di sisi kanan jendela.
(Saya juga berpikir bahwa versi yang lebih baru juga akan menampilkan kunci publik dari tanda tangan, jika Anda membutuhkannya ... Lihat di sini: https://github.com/icsharpcode/ILSpy/issues/610#issuecomment-111189234 . Barang bagus! ;))
sumber
1) Perintahnya adalah
C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\sn -T {your.dll}
Dalam contoh di atas, Microsoft SDK berada di C: \ Program Files \ Microsoft SDKs Windows \ v6.0A. Lingkungan Anda mungkin berbeda.
2) Untuk mendapatkan token kunci publik dari salah satu proyek Anda, Anda dapat menambahkan sn.exe sebagai bagian dari Alat Eksternal di Visual Studio. Langkah-langkahnya ditunjukkan dalam tautan Microsoft ini: Cara: Membuat Alat untuk Mendapatkan Kunci Publik dari Majelis
sumber
Jika seseorang mencari kunci Publik rakitan (seperti saya), bukan Token Kunci Publik - menggunakan sn.exe berfungsi dengan baik, kecuali Anda harus menggunakan sakelar -Tp , yang akan mengembalikan Kunci Publik dan Token Kunci Publik - selengkapnya di https://msdn.microsoft.com/en-us/library/office/ee539398(v=office.14).aspx .
sumber
Sebagai alternatif, Anda juga dapat menggunakan
linq
seperti ini -sumber
.GetPublicKeyToken()
Metode alternatif adalah jika Anda memiliki dekompiler, lihat saja di sana, mereka biasanya menyediakan kunci publik. Saya telah melihat .Net Reflector, Telerik Just Decompile dan ILSpy hanya mendekompilasi mereka tampaknya memiliki token kunci publik ditampilkan.
sumber
Opsi lain adalah menggunakan alat open source, NuGet Package Explorer untuk ini.
Dari paket Nuget (.nupkg) Anda bisa memeriksa PublicKeyToken, atau menyeret biner (.dll) di dalam alat. Untuk yang terakhir pilih pertama "File -> baru"
sumber
Anda dapat menggunakan Ildasm.exe (IL Disassembler) untuk memeriksa metadata majelis, yang berisi nama yang sepenuhnya memenuhi syarat.
Mengikuti MSDN: https://msdn.microsoft.com/en-us/library/2exyydhb(v=vs.110).aspx
sumber