Apa keuntungan menggunakan majelis bernama kuat?
Hal-hal apa saja yang tidak dapat dilakukan dengan perakitan normal?
Izinkan saya mencantumkan manfaat dari penamaan kuat perakitan Anda terlebih dahulu:
Penamaan yang kuat pada assembly Anda memungkinkan Anda untuk memasukkan assembly Anda ke dalam Cache Majelis Global (GAC). Dengan demikian, ini memungkinkan Anda untuk membagikannya di antara banyak aplikasi.
Penamaan yang kuat menjamin nama unik untuk rakitan itu. Jadi tidak ada orang lain yang dapat menggunakan nama assembly yang sama.
Nama yang kuat melindungi garis keturunan versi majelis. Nama yang kuat dapat memastikan bahwa tidak ada yang dapat menghasilkan versi perakitan Anda berikutnya. Pengguna aplikasi dipastikan bahwa versi rakitan yang mereka muat berasal dari penerbit yang sama yang membuat versi pembuatan aplikasi.
Lebih lanjut tentang penamaan yang kuat dari Microsoft ada di Strong-Named Assemblies ( MSDN ).
Karena semua diskusi yang dimulai dengan munculnya Nuget menyarankan untuk sepenuhnya menyingkirkan rakitan bernama yang kuat, perusahaan saya mencobanya dan menemukan perubahan perilaku yang signifikan dalam hal pengaturan aplikasi:
Jika Anda menggunakan aplikasi otomatis atau pengaturan aplikasi cakupan pengguna yang disediakan oleh VisualStudio (mewarisi System.Configuration.ApplicationSettingsBase) maka EXE yang kuat akan membuat tepat 1 direktori di dalam% LOCALAPPDATA% yang dinamai misalnya "YourApplication.exe_StrongName_kjsdfzsuzdfiuzgpoisdiufzsdouif" di mana pun EXE berada terletak.
Tetapi tanpa nama yang kuat, lokasi (= jalur) dari EXE akan digunakan untuk membuat nilai hash yang sudah berbeda antara DEBUG dan RELEASE build, membuat banyak direktori di dalam% LOCALAPPDATA% dengan nama seperti "YourApplication.exe_Url_dfg8778d6fs7g6d7f8g69sdf". Ini membuatnya tidak dapat digunakan untuk penerapan ClickOnce di mana direktori penginstalan berubah dengan setiap pembaruan.
sumber
Saya ingin menambahkan bahwa tanpa nama yang kuat Anda tidak dapat menggunakan pengalihan yang mengikat dalam file konfigurasi.
Ini tidak akan berhasil:
Anda harus memiliki token kunci publik
sumber
Sekadar contoh: Saya ingin memberikan jawaban dengan lebih menekankan pada keamanan . Dalam kasus kami membuat rakitan dengan kode sumber yang tidak ingin digunakan kembali untuk pihak ketiga tetapi kami ingin dapat diuji, kami dapat dengan kuat menandatangani rakitan dan membuat internal terlihat hanya untuk rakitan tersebut dengan tanda tangan yang sama.
sumber