Format file rakitan .NET

.NET mendefinisikan format file biner, rakitan, yang digunakan untuk sepenuhnya terdeskripsi dan berisi program .NET. Rakitan digunakan untuk program itu sendiri serta pustaka mandiri mana pun. Program .NET dapat dijalankan sebagai satu atau beberapa rakitan, tanpa artefak lain yang diperlukan, di luar dari implementasi .NET yang sesuai. Dependensi asli, termasuk API sistem operasi, menjadi perhatian terpisah dan tidak terkandung dalam format rakitan .NET, meskipun terkadang dijelaskan dengan format ini (misalnya, WinRT).

Setiap komponen CLI membawa metadata untuk deklarasi, implementasi, dan referensi khusus untuk komponen tersebut. Oleh karena itu, metadata khusus komponen disebut sebagai metadata komponen, dan komponen yang dihasilkan dikatakan dapat mendreskripsikan sendiri – dari ECMA 335 I.9.1, Komponen dan rakitan.

Format sepenuhnya ditentukan dan distandarkan sebagai ECMA 335. Semua kompilator dan runtime .NET menggunakan format ini. Kehadiran format biner yang didokumentasikan dan jarang diperbarui telah menjadi manfaat utama (bisa dibilang persyaratan) untuk interoperabilitas. Format terakhir diperbarui dengan cara substantif pada tahun 2005 (.NET Framework 2.0) untuk mengakomodasi arsitektur generik dan prosesor.

Formatnya adalah CPU- dan OS-agnostic. Ini telah digunakan sebagai bagian dari implementasi .NET yang menargetkan banyak chip dan CPU. Meskipun format itu sendiri memiliki warisan Windows, format itu dapat diimplementasikan pada sistem operasi apa pun. Pilihannya yang paling signifikan untuk interoperabilitas OS adalah bahwa sebagian besar nilai disimpan dalam format little-endian. Ini tidak memiliki afinitas tertentu untuk ukuran penunjuk mesin (misalnya, 32-bit, 64-bit).

Format rakitan .NET juga sangat deskriptif tentang struktur program atau pustaka tertentu. Ini menjelaskan komponen internal perakitan, khususnya referensi dan jenis perakitan yang ditentukan dan internal strukturnya. Tool atau API dapat membaca dan memproses informasi ini untuk ditampilkan atau membuat keputusan yang terprogram.

Format

Format biner .NET didasarkan pada format file PE Windows. Bahkan, kelas pustaka .NET sesuai dengan Windows PEs, dan muncul sekilas untuk menjadi Windows pustaka tautan dinamis (DLL) atau aplikasi eksekusi (EXEs) yang sesuai. Ini adalah karakteristik yang sangat berguna pada Windows, di mana mereka dapat menyanggah sebagai biner asli yang dapat dieksekusi dan mendapatkan beberapa perawatan yang sama (misalnya, beban OS, alat PE).

Header rakitan

Header Rakitan dari ECMA 335 II.25.1, Struktur format file runtime.

Memproses rakitan

Dimungkinkan untuk menulis tool atau API untuk memproses rakitan. Informasi perakitan memungkinkan pengambilan keputusan terprogram pada run time, menulis ulang rakitan, menyediakan API IntelliSense di editor, dan menghasilkan dokumentasi. System.Reflection, System.Reflection.MetadataLoadContext, dan Mono.Cecil adalah contoh alat yang baik yang sering digunakan untuk tujuan ini.