Bagikan melalui


Cara untuk: Menandatangani assembly dengan nama yang kuat

Catatan

Meskipun .NET Core mendukung assembly bernama kuat, dan semua assembly di pustaka .NET Core ditandatangani, sebagian besar assembly pihak ketiga tidak memerlukan nama yang kuat. Untuk informasi selengkapnya, lihat Penandatanganan nama yang kuat GitHub.

Ada sejumlah cara untuk menandatangani assembly dengan nama yang kuat:

  • Dengan menggunakan halaman Penamaan Build>Strong di perancang proyek untuk proyek di Visual Studio. Ini adalah cara termudah dan paling nyaman untuk menandatangani assembly dengan nama yang kuat.
  • Dengan menggunakan Assembly Linker (Al.exe) untuk menautkan modul kode .NET Framework (file .netmodule) dengan file kunci.
  • Dengan menggunakan atribut assembly untuk menyisipkan informasi nama yang kuat ke dalam kode Anda. Anda dapat menggunakan atribut AssemblyKeyFileAttribute atau AssemblyKeyNameAttribute, tergantung di mana file kunci yang akan digunakan berada.
  • Dengan menggunakan opsi pengkompilasi.

Anda harus memiliki pasangan kunci kriptografi untuk menandatangani assembly dengan nama yang kuat. Untuk informasi selengkapnya tentang membuat pasangan kunci, lihat Cara: Membuat pasangan kunci publik-privat.

Membuat dan menandatangani assembly dengan nama yang kuat dengan menggunakan Visual Studio

  1. Di Penjelajah Solusi, buka menu pintasan untuk proyek, lalu pilih Properti.
  2. Di bagian tab Build, Anda akan menemukan node penamaan yang kuat.
  3. Pilih kotak centang Tanda tangani assembly, yang memperluas opsi.
  4. Pilih tombol Telusuri untuk memilih jalur file kunci nama yang kuat.

Catatan

Untuk menunda menandatangani assembly, pilih file kunci publik.

Visual Studio 2022: Properti proyek, bagian Build / Penamaan yang kuat.

Membuat dan menandatangani assembly dengan nama yang kuat dengan menggunakan Visual Studio

Buka Visual Studio Developer Command Prompt atau Visual Studio Developer PowerShell dan masukkan perintah berikut:

al /out:<assemblyName<>moduleName> /keyfile:<keyfileName >

Mana:

  • assemblyName adalah nama assembly yang ditandatangani dengan kuat (file .dll atau .exe ) yang akan dipancarkan Oleh Assembly Linker.
  • moduleName adalah nama modul kode .NET Framework (file .netmodule) yang menyertakan satu atau beberapa jenis. Anda dapat membuat file .netmodule dengan mengkompilasi kode Anda dengan /target:module switch di C# atau Visual Basic.
  • keyfileName adalah nama kontainer atau file yang berisi pasangan kunci. Assembly Linker menafsirkan jalur relatif dalam kaitannya dengan direktori saat ini.

Contoh berikut menandatangani assembly MyAssembly.dll dengan nama yang kuat dengan menggunakan file kunci sgKey.snk.

al /out:MyAssembly.dll MyModule.netmodule /keyfile:sgKey.snk

Untuk informasi selengkapnya tentang alat ini, lihat Assembly Linker.

Menandatangani assembly dengan nama yang kuat dengan menggunakan atribut

  1. System.Reflection.AssemblyKeyFileAttribute Menambahkan atribut atau AssemblyKeyNameAttribute ke file kode sumber Anda, dan tentukan nama file atau kontainer yang berisi pasangan kunci yang akan digunakan saat menandatangani assembly dengan nama yang kuat.

  2. Mengompilasi file kode sumber secara normal.

    Catatan

    Pengkompilasi C# dan Visual Basic mengeluarkan peringatan pengkompilasi (CS1699 dan BC41008) ketika mereka menemukan atribut AssemblyKeyFileAttribute atau AssemblyKeyNameAttribute dalam kode sumber. Anda dapat mengabaikan peringatan ini.

Contoh berikut menggunakan AssemblyKeyFileAttribute atribut dengan file kunci yang disebut keyfile.snk, yang terletak di direktori tempat assembly dikompilasi.

[assembly:AssemblyKeyFileAttribute("keyfile.snk")];
[assembly:AssemblyKeyFileAttribute("keyfile.snk")]
<Assembly:AssemblyKeyFileAttribute("keyfile.snk")>

Anda juga dapat menunda menandatangani assembly saat mengkompilasi file sumber Anda. Untuk informasi selengkapnya, lihat Menunda-menandatangani assembly.

Menandatangani assembly dengan nama yang kuat dengan menggunakan atribut

Mengompilasi file atau file kode sumber Anda dengan opsi /keyfile atau /delaysign pengkompilasi di C# dan Visual Basic, atau opsi /KEYFILE atau /DELAYSIGN linker di C++. Setelah nama opsi, tambahkan titik dua dan nama file kunci. Saat menggunakan pengkompilasi baris perintah, Anda dapat menyalin file kunci ke direktori yang berisi file kode sumber Anda.

Untuk informasi tentang penandatanganan penundaan, lihat Menunda-menandatangani assembly.

Contoh berikut menggunakan pengkompilasi C# dan menandatangani perakitanUtilityLibrary.dll dengan nama yang kuat dengan menggunakan file kunci sgKey.snk.

csc /t:library UtilityLibrary.cs /keyfile:sgKey.snk

Lihat juga