Formát souborů sestavení .NET

.NET definuje binární formát souboru, sestavení, které slouží k úplnému popisu a zahrnutí programů .NET. Sestavení se používají pro samotné programy i pro všechny závislé knihovny. Program .NET lze spustit jako jedno nebo více sestavení bez dalších požadovaných artefaktů mimo příslušnou implementaci .NET. Nativní závislosti, včetně rozhraní API operačního systému, představují samostatný problém a nejsou obsaženy ve formátu sestavení .NET, i když jsou někdy popsány v tomto formátu (například WinRT).

Každá komponenta rozhraní příkazového řádku má metadata pro deklarace, implementace a odkazy specifické pro danou komponentu. Proto se metadata specifická pro jednotlivé komponenty označují jako metadata komponent a výsledná komponenta se označuje jako samopis – od ECMA 335 I.9.1, komponent a sestavení.

Formát je plně specifikován a standardizován jako ECMA 335. Tento formát používají všechny kompilátory a moduly runtime .NET. Přítomnost zdokumentovaného a zřídka aktualizovaného binárního formátu představuje velkou výhodu (pravděpodobně požadavek) pro interoperabilitu. Formát byl naposledy aktualizován podstatným způsobem v roce 2005 (.NET Framework 2.0), aby vyhovoval obecné architektuře a architektuře procesoru.

Formát je nezávislý na procesoru a operačním systému. Používá se jako součást implementací .NET, které cílí na mnoho čipů a procesorů. I když samotný formát má dědictví Windows, je možné ho implementovat v jakémkoli operačním systému. Jeho pravděpodobně nejvýznamnější volbou pro interoperabilitu operačního systému je, že většina hodnot je uložena v malém endian formátu. Nemá konkrétní spřažení s velikostí ukazatele počítače (například 32bitová, 64bitová).

Formát sestavení .NET je také velmi popisný o struktuře daného programu nebo knihovny. Popisuje vnitřní komponenty sestavení, konkrétně odkazy na sestavení a typy definované a jejich vnitřní strukturu. Nástroje nebo rozhraní API mohou tyto informace číst a zpracovávat, aby se mohly zobrazovat nebo provádět programová rozhodnutí.

Formát

Binární formát .NET je založený na formátu souboru Windows PE. Knihovny tříd .NET jsou ve skutečnosti vyhovující prostředí Windows PE a na první pohled se zobrazují jako knihovny dll (DLL) systému Windows nebo spustitelné soubory aplikací (EXE). To je velmi užitečná vlastnost ve Windows, kde se můžou maskovat jako nativní spustitelné binární soubory a získat určitou stejnou léčbu (například načtení operačního systému, nástroje PE).

Hlavičky sestavení

Hlavičky sestavení z ECMA 335 II.25.1, struktura formátu souboru modulu runtime.

Zpracování sestavení

Ke zpracování sestavení je možné psát nástroje nebo rozhraní API. Informace o sestavení umožňují provádět programová rozhodnutí za běhu, přepisovat sestavení, poskytovat rozhraní API IntelliSense v editoru a generovat dokumentaci. System.Reflection, a System.Reflection.MetadataLoadContextMono.Cecil jsou dobrými příklady nástrojů, které se často používají pro tento účel.