Assembly's in .NET
Assembly's vormen de fundamentele eenheden van implementatie, versiebeheer, hergebruik, activeringsbereik en beveiligingsmachtigingen voor. Op NET gebaseerde toepassingen. Een assembly is een verzameling typen en resources die zijn gebouwd om samen te werken en een logische eenheid van functionaliteit te vormen. Assembly's hebben de vorm van uitvoerbare bestanden (.exe) of dynamische koppelingsbibliotheek (.dll) en zijn de bouwstenen van .NET-toepassingen. Ze bieden de algemene taalruntime met de informatie die nodig is om op de hoogte te zijn van typeimplementaties.
In .NET en .NET Framework kunt u een assembly maken op basis van een of meer broncodebestanden. In .NET Framework kunnen assembly's een of meer modules bevatten. Hierdoor kunnen grotere projecten worden gepland, zodat meerdere ontwikkelaars kunnen werken aan afzonderlijke broncodebestanden of -modules, die worden gecombineerd om één assembly te maken. Zie Procedures voor meer informatie over modules : Een assembly met meerdere bestanden bouwen.
Assembly's hebben de volgende eigenschappen:
Assembly's worden geïmplementeerd als .exe - of .dll-bestanden .
Voor bibliotheken die zijn gericht op .NET Framework, kunt u assembly's delen tussen toepassingen door ze in de algemene assemblycache (GAC) te plaatsen. U moet assembly's met een sterke naam gebruiken voordat u ze kunt opnemen in de GAC. Zie Strong-named assembly's voor meer informatie.
Assembly's worden alleen in het geheugen geladen als ze vereist zijn. Als ze niet worden gebruikt, worden ze niet geladen. Dit betekent dat assembly's een efficiënte manier kunnen zijn om resources in grotere projecten te beheren.
U kunt programmatisch informatie over een assembly verkrijgen met behulp van reflectie. Zie Reflectie (C#) of Weerspiegeling (Visual Basic) voor meer informatie.
U kunt een assembly alleen laden om deze te inspecteren met behulp van de MetadataLoadContext klasse op .NET en .NET Framework. MetadataLoadContext vervangt de Assembly.ReflectionOnlyLoad methoden.
Assembly's in de algemene taalruntime
Assembly's bieden de algemene taalruntime met de informatie die nodig is om op de hoogte te zijn van typeimplementaties. Voor de runtime bestaat een type niet buiten de context van een assembly.
Een assembly definieert de volgende informatie:
Code die door de algemene taalruntime wordt uitgevoerd. Houd er rekening mee dat elke assembly slechts één ingangspunt kan hebben:
DllMain
,WinMain
, ofMain
.Beveiligingsgrens. Een assembly is de eenheid waarvoor machtigingen worden aangevraagd en verleend. Zie Beveiligingsoverwegingen voor assembly's voor meer informatie over beveiligingsgrenzen in assembly's.
Type grens. De identiteit van elk type bevat de naam van de assembly waarin het zich bevindt. Een type
MyType
dat in het bereik van de ene assembly wordt geladen, is niet hetzelfde als een typeMyType
dat wordt geladen in het bereik van een andere assembly.Referentiebereikgrens. Het assemblymanifest bevat metagegevens die worden gebruikt voor het oplossen van typen en het voldoen aan resourceaanvragen. In het manifest worden de typen en resources opgegeven die buiten de assembly moeten worden weergegeven en worden andere assembly's opgesomd waarvan deze afhankelijk is. MSIL-code (Tussenliggende taal) van Microsoft in een draagbaar uitvoerbaar BESTAND (PE) wordt niet uitgevoerd, tenzij het een gekoppeld assemblymanifest heeft.
Versiegrens. De assembly is de kleinste versieerbare eenheid in de algemene taalruntime. Alle typen en resources in dezelfde assembly worden als een eenheid geversied. In het assemblymanifest worden de versieafhankelijkheden beschreven die u opgeeft voor afhankelijke assembly's. Zie Assembly-versiebeheer voor meer informatie over versiebeheer.
Implementatie-eenheid. Wanneer een toepassing wordt gestart, moeten alleen de assembly's die de toepassing in eerste instantie aanroept aanwezig zijn. Andere assembly's, zoals assembly's met lokalisatiebronnen of nutsklassen, kunnen op aanvraag worden opgehaald. Hierdoor kunnen apps eenvoudig en dun zijn wanneer ze voor het eerst worden gedownload. Zie Toepassingen implementeren voor meer informatie over het implementeren van assembly's.
Uitvoeringseenheid naast elkaar. Zie Assembly's en side-by-side-uitvoering voor meer informatie over het uitvoeren van meerdere versies van een assembly.
Een assembly maken
Assembly's kunnen statisch of dynamisch zijn. Statische assembly's worden opgeslagen op schijf in draagbare uitvoerbare (PE)-bestanden. Statische assembly's kunnen interfaces, klassen en resources bevatten, zoals bitmaps, JPEG-bestanden en andere resourcebestanden. U kunt ook dynamische assembly's maken, die rechtstreeks vanuit het geheugen worden uitgevoerd en niet worden opgeslagen op de schijf voordat de uitvoering wordt uitgevoerd. U kunt dynamische assembly's opslaan op schijf nadat ze zijn uitgevoerd.
Er zijn verschillende manieren om assembly's te maken. U kunt ontwikkelhulpprogramma's, zoals Visual Studio, gebruiken waarmee u.dll- of .exe bestanden kunt maken. U kunt hulpprogramma's in de Windows SDK gebruiken om assembly's te maken met modules uit andere ontwikkelomgevingen. U kunt ook algemene runtime-API's voor de taal gebruiken, zoals System.Reflection.Emit, om dynamische assembly's te maken.
Compileer assembly's door ze te bouwen in Visual Studio, ze te bouwen met .NET Core opdrachtregelinterfaceprogramma's of .NET Framework assembly's te bouwen met een opdrachtregelcompilator. Zie het overzicht van .NET CLI voor meer informatie over het bouwen van assembly's met behulp van .NET CLI.
Notitie
Als u een assembly wilt maken in Visual Studio, selecteert u Build in het menu Build.
Assemblymanifest
Elke assembly heeft een assemblymanifestbestand . Net als bij een inhoudsopgave bevat het assemblymanifest:
De identiteit van de assembly (de naam en versie).
Een bestandstabel met een beschrijving van alle andere bestanden waaruit de assembly bestaat, zoals andere assembly's die u hebt gemaakt, dat uw .exe - of .dll-bestand afhankelijk is van, bitmapbestanden of Leesmij-bestanden.
Een assemblyreferentielijst, een lijst met alle externe afhankelijkheden, zoals .dlls of andere bestanden. Assemblyverwijzingen bevatten verwijzingen naar zowel globale als privéobjecten. Globale objecten zijn beschikbaar voor alle andere toepassingen. In .NET Core worden globale objecten gekoppeld aan een bepaalde .NET Core-runtime. In .NET Framework bevinden globale objecten zich in de algemene assemblycache (GAC). System.IO.dll is een voorbeeld van een assembly in de GAC. Privéobjecten moeten zich op mapniveau bevinden op of onder de map waarin uw app is geïnstalleerd.
Omdat assembly's informatie bevatten over inhoud, versiebeheer en afhankelijkheden, hoeven de toepassingen die deze gebruiken, niet te vertrouwen op externe bronnen, zoals het register op Windows systemen, om goed te functioneren. Assembly's verminderen .dll conflicten en maken uw toepassingen betrouwbaarder en eenvoudiger te implementeren. In veel gevallen kunt u een . Op NET gebaseerde toepassing hoeft u alleen maar de bestanden naar de doelcomputer te kopiëren. Zie assemblymanifest voor meer informatie.
Een verwijzing naar een assembly toevoegen
Als u een assembly in een toepassing wilt gebruiken, moet u er een verwijzing aan toevoegen. Zodra naar een assembly wordt verwezen, zijn alle toegankelijke typen, eigenschappen, methoden en andere leden van de naamruimten beschikbaar voor uw toepassing alsof hun code deel uitmaakt van uw bronbestand.
Notitie
De meeste assembly's uit de .NET-klassebibliotheek worden automatisch verwezen. Als er niet automatisch naar een systeemassembly wordt verwezen, voegt u een verwijzing toe op een van de volgende manieren:
- Voeg voor .NET en .NET Core een verwijzing toe naar het NuGet-pakket dat de assembly bevat. Gebruik de NuGet-Pakketbeheer in Visual Studio of voeg een <PackageReference-element> voor de assembly toe aan het .csproj- of .vbproj-project.
- Voeg voor .NET Framework een verwijzing naar de assembly toe met behulp van het dialoogvenster Verwijzing toevoegen in Visual Studio, of met behulp van de
-reference
opdrachtregeloptie voor de C# of Visual Basic compilers.
In C# kunt u twee versies van dezelfde assembly in één toepassing gebruiken. Zie extern alias voor meer informatie.
Gerelateerde inhoud
Titel | Beschrijving |
---|---|
Assembly-inhoud | Elementen waaruit een assembly bestaat. |
Assemblymanifest | Gegevens in het assemblymanifest en hoe deze worden opgeslagen in assembly's. |
Globale assemblycache | Hoe de GAC assembly's opslaat en gebruikt. |
Sterk benoemde assembly's | Kenmerken van sterk benoemde assembly's. |
Beveiligingsoverwegingen voor assembly's | Hoe beveiliging werkt met assembly's. |
Assemblyversiebeheer | Overzicht van het .NET Framework versiebeheerbeleid. |
Montageplaatsing | Waar u assembly's kunt vinden. |
Assembly's en uitvoering naast elkaar | Gebruik meerdere versies van de runtime of een assembly tegelijk. |
Dynamische methoden en assembly's verzenden | Dynamische assembly's maken. |
Hoe de runtime assembly's zoekt | Hoe de .NET Framework assemblyverwijzingen tijdens runtime oplost. |
Referentie
Zie ook
- .NET Assembly-bestandsindeling
- Vriendenassembly's
- Referentieassembly's
- Procedure: Assembly's laden en uitladen
- Procedure: Assembly onloadbaarheid gebruiken en fouten opsporen in .NET Core
- Procedure: Bepalen of een bestand een assembly is
- Procedure: Assembly-inhoud inspecteren met MetadataLoadContext