Dela via


.NET-sammansättningsfilformat

.NET definierar ett binärt filformat, sammansättning, som används för att helt beskriva och innehålla .NET-program. Sammansättningar används för själva programmen samt för beroende bibliotek. Ett .NET-program kan köras som en eller flera sammansättningar, utan några andra nödvändiga artefakter, utöver lämplig .NET-implementering. Interna beroenden, inklusive OPERATIVSYSTEM-API:er, är ett separat problem och finns inte i .NET-sammansättningsformatet, även om de ibland beskrivs med det här formatet (till exempel WinRT).

Varje CLI-komponent innehåller metadata för deklarationer, implementeringar och referenser som är specifika för komponenten. Därför kallas komponentspecifika metadata för komponentmetadata och den resulterande komponenten sägs vara självbeskrivande – från ECMA 335 I.9.1, Komponenter och sammansättningar.

Formatet är helt angivet och standardiserat som ECMA 335. Alla .NET-kompilatorer och -runtimes använder det här formatet. Förekomsten av ett dokumenterat och sällan uppdaterat binärt format har varit en stor fördel (förmodligen ett krav) för samverkan. Formatet uppdaterades senast på ett väsentligt sätt under 2005 (.NET Framework 2.0) för att hantera generiska objekt och processorarkitektur.

Formatet är CPU- och OS-agnostiskt. Den har använts som en del av .NET-implementeringar som riktar sig mot många chips och processorer. Även om själva formatet har Windows-arv kan det implementeras på alla operativsystem. Dess förmodligen viktigaste val för OS-samverkan är att de flesta värden lagras i lite endianskt format. Den har ingen specifik tillhörighet till datorpekarstorleken (till exempel 32-bitars, 64-bitars).

.NET-sammansättningsformatet är också mycket beskrivande när det gäller strukturen för ett visst program eller bibliotek. Den beskriver de interna komponenterna i en sammansättning, särskilt sammansättningsreferenser och typer som definierats och deras interna struktur. Verktyg eller API:er kan läsa och bearbeta den här informationen för visning eller för att fatta programmatiska beslut.

Format

Binärt .NET-format baseras på Windows PE-filformatet . I själva verket är .NET-klassbibliotek överensstämmande Windows-PEs och visas vid första anblicken som Windows dynamiska länkbibliotek (DLL: er) eller körbara program (EXE). Detta är en mycket användbar egenskap i Windows, där de kan maskeras som inbyggda körbara binärfiler och få en del av samma behandling (till exempel OS-belastning, PE-verktyg).

Sammansättningshuvuden

Sammansättningshuvuden från ECMA 335 II.25.1, Struktur för körningsfilformatet.

Bearbeta sammansättningarna

Det går att skriva verktyg eller API:er för att bearbeta sammansättningar. Sammansättningsinformation gör det möjligt att fatta programmatiska beslut vid körning, skriva om sammansättningar, tillhandahålla API IntelliSense i en redigerare och generera dokumentation. System.Reflection, System.Reflection.MetadataLoadContext, och Mono.Cecil är bra exempel på verktyg som ofta används för detta ändamål.