Nama perakitan
Nama perakitan disimpan dalam metadata dan memiliki dampak signifikan pada cakupan dan penggunaan perakitan oleh aplikasi. Perakitan dengan nama yang kuat memiliki nama yang sepenuhnya memenuhi syarat yang mencakup nama perakitan, budaya, kunci umum, nomor versi, dan, arsitektur prosesor secara opsional. Gunakan properti FullName untuk mendapatkan nama yang sepenuhnya memenuhi syarat, sering disebut sebagai nama tampilan, untuk perakitan yang dimuat.
Runtime menggunakan informasi nama untuk menemukan perakitan dan membedakannya dari perakitan lain dengan nama yang sama. Misalnya, perakitan dengan nama yang kuat yang disebut myTypes
dapat memiliki nama yang sepenuhnya memenuhi syarat berikut:
myTypes, Version=1.0.1234.0, Culture=en-US, PublicKeyToken=b77a5c561934e089c, ProcessorArchitecture=msil
Dalam contoh ini, nama yang sepenuhnya memenuhi syarat menunjukkan bahwa perakitan myTypes
memiliki nama yang kuat dengan token kunci umum, memiliki nilai budaya untuk bahasa Inggris Amerika Serikat, dan memiliki nomor versi 1.0.1234.0. Arsitektur prosesornya adalah msil
, yang berarti akan dikompilasi just-in-time (JIT) ke kode 32-bit atau kode 64-bit tergantung pada sistem operasi dan prosesor.
Tip
Informasi ProcessorArchitecture
memungkinkan versi perakitan khusus prosesor. Anda dapat membuat versi perakitan yang identitasnya hanya berbeda berdasarkan arsitektur prosesor, misalnya versi khusus prosesor 32-bit dan 64-bit. Arsitektur prosesor tidak diperlukan untuk nama yang kuat. Untuk informasi selengkapnya, lihat AssemblyName.ProcessorArchitecture .
Kode yang meminta jenis dalam perakitan harus menggunakan nama perakitan yang sepenuhnya memenuhi syarat. Hal ini disebut pengikatan yang sepenuhnya memenuhi syarat. Pengikatan sebagian, yang hanya menentukan nama perakitan, tidak diizinkan saat mereferensikan perakitan di .NET Framework.
Semua referensi perakitan ke perakitan yang membentuk .NET Framework juga harus berisi nama perakitan yang sepenuhnya memenuhi syarat. Misalnya, referensi ke perakitan System.Data .NET Framework untuk versi 1.0 akan mencakup:
System.data, version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
Versi tersebut sesuai dengan nomor versi semua perakitan .NET Framework yang dikirimkan dengan .NET Framework versi 1.0. Untuk perakitan .NET Framework, nilai budaya selalu netral, dan kunci umumnya sama seperti yang ditunjukkan pada contoh di atas.
Misalnya, untuk menambahkan referensi perakitan dalam file konfigurasi untuk menyiapkan pendengar jejak, Anda harus menyertakan nama yang sepenuhnya memenuhi syarat perakitan .NET Framework sistem:
<add name="myListener" type="System.Diagnostics.TextWriterTraceListener, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="c:\myListener.log" />
Catatan
Runtime memperlakukan nama perakitan sebagai tidak peka huruf besar/kecil saat mengikat ke perakitan, tetapi mempertahankan kasing apa pun yang digunakan dalam nama perakitan. Beberapa alat di SDK Windows menangani nama perakitan sebagai peka huruf besar/kecil. Untuk hasil terbaik, kelola nama perakitan seolah-olah peka huruf besar-kecil.
Beri nama komponen aplikasi
Runtime tidak mempertimbangkan nama file saat menentukan identitas perakitan. Identitas perakitan, yang terdiri dari nama perakitan, versi, budaya, dan nama yang kuat, harus jelas untuk runtime.
Misalnya, jika Anda memiliki perakitan bernama myAssembly.exe yang merujuk perakitan bernama myAssembly.dll, pengikatan terjadi dengan benar jika Anda menjalankan myAssembly.exe. Namun, jika aplikasi lain menjalankan myAssembly.exe menggunakan metode AppDomain.ExecuteAssembly, runtime menentukan bahwa myAssembly
sudah dimuat saat myAssembly.exe meminta pengikatan ke myAssembly
. Dalam hal ini, myAssembly.dll tidak pernah dimuat. Karena myAssembly.exe tidak berisi jenis yang diminta, TypeLoadException terjadi.
Untuk menghindari masalah ini, pastikan perakitan yang membentuk aplikasi Anda tidak memiliki nama perakitan yang sama atau perakitan tempat dengan nama yang sama di direktori yang berbeda.
Catatan
Di .NET Framework, jika Anda meletakkan perakitan bernama kuat di cache perakitan global, nama file perakitan harus cocok dengan nama perakitan, tidak termasuk ekstensi nama file, seperti .exe atau .dll. Misalnya, jika nama file perakitan adalah myAssembly.dll, nama perakitan harus myAssembly
. Perakitan privat yang digunakan hanya di direktori aplikasi akar dapat memiliki nama perakitan yang berbeda dari nama file.