Sammansättningar i .NET
Sammansättningar utgör de grundläggande enheterna för distribution, versionskontroll, återanvändning, aktiveringsomfång och säkerhetsbehörigheter för . NET-baserade program. En sammansättning är en samling typer och resurser som har skapats för att fungera tillsammans och bilda en logisk funktionsenhet. Sammansättningar har formatet körbara (.exe) eller dynamiska länkbiblioteksfiler (.dll) och är byggstenarna i .NET-program. De tillhandahåller den vanliga språkkörningen med den information som behövs för att vara medveten om typimplementeringar.
I .NET och .NET Framework kan du skapa en sammansättning från en eller flera källkodsfiler. I .NET Framework kan sammansättningar innehålla en eller flera moduler. Detta gör att större projekt kan planeras så att flera utvecklare kan arbeta med separata källkodsfiler eller moduler, som kombineras för att skapa en enda sammansättning. Mer information om moduler finns i How to: Build a multifile assembly (Så här skapar du en sammansättning med flera filer).
Sammansättningar har följande egenskaper:
Sammansättningar implementeras som .exe - eller .dll-filer .
För bibliotek som är inriktade på .NET Framework kan du dela sammansättningar mellan program genom att placera dem i den globala sammansättningscachen (GAC). Du måste ha sammansättningar med starka namn innan du kan inkludera dem i GAC. Mer information finns i Strong-named assemblies (Starkt namngivna sammansättningar).
Sammansättningar läses bara in i minnet om de behövs. Om de inte används läses de inte in. Det innebär att sammansättningar kan vara ett effektivt sätt att hantera resurser i större projekt.
Du kan programmatiskt hämta information om en sammansättning med hjälp av reflektion. Mer information finns i Reflektion (C#) eller Reflektion (Visual Basic).
Du kan läsa in en sammansättning bara för att inspektera den med hjälp MetadataLoadContext av klassen på .NET och .NET Framework. MetadataLoadContext ersätter Assembly.ReflectionOnlyLoad metoderna.
Sammansättningar i common language runtime
Sammansättningar tillhandahåller den vanliga språkkörningen med den information som behövs för att vara medveten om typimplementeringar. För körningen finns ingen typ utanför kontexten för en sammansättning.
En sammansättning definierar följande information:
Kod som körs på det vanliga språket. Observera att varje sammansättning bara kan ha en startpunkt:
DllMain
,WinMain
ellerMain
.Säkerhetsgräns. En sammansättning är den enhet där behörigheter begärs och beviljas. Mer information om säkerhetsgränser i sammansättningar finns i Säkerhetsöverväganden för sammansättningar.
Typgräns. Varje typs identitet innehåller namnet på den sammansättning där den finns. En typ som heter
MyType
som läses in i omfånget för en sammansättning är inte samma som en typ som heterMyType
och som läses in i omfånget för en annan sammansättning.Referensomfattningsgräns. Sammansättningsmanifestet har metadata som används för att matcha typer och uppfylla resursbegäranden. Manifestet anger vilka typer och resurser som ska exponeras utanför sammansättningen och räknar upp andra sammansättningar som den är beroende av. Microsofts MSIL-kod (Intermediate Language) i en bärbar körbar fil (PE) körs inte om den inte har ett associerat sammansättningsmanifest.
Versionsgräns. Sammansättningen är den minsta versionsbara enheten i den gemensamma språkkörningen. Alla typer och resurser i samma sammansättning är versionshanterade som en enhet. Sammansättningsmanifestet beskriver de versionsberoenden som du anger för alla beroende sammansättningar. Mer information om versionshantering finns i Versionshantering för sammansättning.
Distributionsenhet. När ett program startar måste endast de sammansättningar som programmet ursprungligen anropar finnas. Andra sammansättningar, till exempel sammansättningar som innehåller lokaliseringsresurser eller verktygsklasser, kan hämtas på begäran. På så sätt kan appar vara enkla och tunna när de först laddas ned. Mer information om hur du distribuerar sammansättningar finns i Distribuera program.
Sida vid sida-körningsenhet. Mer information om hur du kör flera versioner av en sammansättning finns i Sammansättningar och sida vid sida-körning.
Skapa en sammansättning
Sammansättningar kan vara statiska eller dynamiska. Statiska sammansättningar lagras på disken i bärbara körbara filer (PE). Statiska sammansättningar kan innehålla gränssnitt, klasser och resurser som bitmappar, JPEG-filer och andra resursfiler. Du kan också skapa dynamiska sammansättningar som körs direkt från minnet och inte sparas till disken före körning. Du kan spara dynamiska sammansättningar på disk när de har körts.
Det finns flera sätt att skapa sammansättningar. Du kan använda utvecklingsverktyg, till exempel Visual Studio, som kan skapa .dll eller .exe filer. Du kan använda verktyg i Windows SDK för att skapa sammansättningar med moduler från andra utvecklingsmiljöer. Du kan också använda vanliga språkkörnings-API:er, till exempel System.Reflection.Emit, för att skapa dynamiska sammansättningar.
Kompilera sammansättningar genom att skapa dem i Visual Studio, skapa dem med kommandoradsverktyg för .NET Core eller skapa .NET Framework sammansättningar med en kommandoradskompilerare. Mer information om hur du skapar sammansättningar med hjälp av .NET CLI finns i .NET CLI-översikt.
Anteckning
Om du vill skapa en sammansättning i Visual Studio går du till menyn Skapa och väljer Skapa.
Sammansättningsmanifest
Varje sammansättning har en sammansättningsmanifestfil . På liknande sätt som i en innehållsförteckning innehåller sammansättningsmanifestet:
Sammansättningens identitet (dess namn och version).
En filtabell som beskriver alla andra filer som utgör sammansättningen, till exempel andra sammansättningar som du har skapat som din.exe - eller .dll-fil förlitar sig på, bitmappsfiler eller Readme-filer.
En sammansättningsreferenslista, som är en lista över alla externa beroenden, till exempel .dlleller andra filer. Sammansättningsreferenser innehåller referenser till både globala och privata objekt. Globala objekt är tillgängliga för alla andra program. I .NET Core kombineras globala objekt med en viss .NET Core-körning. I .NET Framework finns globala objekt i den globala sammansättningscache (GAC). System.IO.dll är ett exempel på en sammansättning i GAC. Privata objekt måste finnas på en katalognivå på eller under den katalog där appen är installerad.
Eftersom sammansättningar innehåller information om innehåll, versionshantering och beroenden behöver de program som använder dem inte förlita sig på externa källor, till exempel registret på Windows system, för att fungera korrekt. Sammansättningar minskar .dll konflikter och gör dina program mer tillförlitliga och enklare att distribuera. I många fall kan du installera en . NET-baserade program genom att helt enkelt kopiera filerna till måldatorn. Mer information finns i Sammansättningsmanifest.
Lägga till en referens till en sammansättning
Om du vill använda en sammansättning i ett program måste du lägga till en referens till den. När en sammansättning refereras är alla tillgängliga typer, egenskaper, metoder och andra medlemmar i dess namnområden tillgängliga för ditt program som om deras kod ingick i källfilen.
Anteckning
De flesta sammansättningar från .NET-klassbiblioteket refereras automatiskt. Om en systemsammansättning inte refereras automatiskt lägger du till en referens på något av följande sätt:
- För .NET och .NET Core lägger du till en referens till NuGet-paketet som innehåller sammansättningen. Använd antingen NuGet Package Manager i Visual Studio eller lägg till ett <PackageReference-element> för sammansättningen i projektet .csproj eller .vbproj.
- För .NET Framework lägger du till en referens till sammansättningen med hjälp av dialogrutan Lägg till referens i Visual Studio eller genom att använda kommandoradsalternativet
-reference
för C# eller Visual Basic kompilatorer.
I C# kan du använda två versioner av samma sammansättning i ett enda program. Mer information finns i externt alias.
Relaterat innehåll
Rubrik | Beskrivning |
---|---|
Sammansättningsinnehåll | Element som utgör en sammansättning. |
Sammansättningsmanifest | Data i sammansättningsmanifestet och hur de lagras i sammansättningar. |
Global sammansättningscache | Hur GAC lagrar och använder sammansättningar. |
Starka namngivna sammansättningar | Egenskaper för starka namngivna sammansättningar. |
Säkerhetsöverväganden för sammansättning | Hur säkerhet fungerar med sammansättningar. |
Versionshantering av sammansättning | Översikt över .NET Framework versionsprincip. |
Sammansättningsplacering | Var du hittar sammansättningar. |
Sammansättningar och körning sida vid sida | Använd flera versioner av körningen eller en sammansättning samtidigt. |
Generera dynamiska metoder och sammansättningar | Skapa dynamiska sammansättningar. |
Så här hittar körningen sammansättningar | Så här löser .NET Framework sammansättningsreferenser vid körning. |
Referens
Se även
- .NET-sammansättningsfilformat
- Vänsammansättningar
- Referenssammansättningar
- Anvisningar: Läsa in och ta bort sammansättningar
- Anvisningar: Använda och felsöka monteringsutlastning i .NET Core
- Anvisningar: Avgöra om en fil är en sammansättning
- Anvisningar: Granska sammansättningsinnehåll med metadataLoadContext