Delen via


Assembly's in .NET

Assembly's zijn 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 koppelingsbibliotheekbestanden (.dll) en zijn de bouwstenen van .NET-toepassingen. Ze bieden de algemene taalruntime met de informatie die nodig is om rekening te houden met type-implementaties.

In .NET en .NET Framework kunt u een assembly bouwen op basis van een of meer broncodebestanden. In .NET Framework kunnen assembly's een of meer modules bevatten. Op deze manier kunnen grotere projecten worden gepland, zodat meerdere ontwikkelaars kunnen werken aan afzonderlijke broncodebestanden of modules, die worden gecombineerd om één assembly te maken. Zie Een assembly met meerdere bestanden bouwen voor meer informatie over modules.

Assembly's hebben de volgende eigenschappen:

  • Assemblies worden geïmplementeerd als .exe-bestand of .dll-bestanden .

  • Voor bibliotheken die zich richten op .NET Framework, kunt u assembly's tussen toepassingen delen door ze in de algemene assemblycache (GAC) te plaatsen. U moet assemblies voorzien van een sterke naam voordat u ze kunt opnemen in de GAC. Zie sterk benoemde assembly'svoor meer informatie.

  • Assembly's worden alleen in het geheugen geladen als ze vereist zijn. Als ze niet worden gebruikt, worden ze niet geladen. Daarom kunnen assembly's een efficiënte manier 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

Assemblies bieden de Common Language Runtime de informatie die nodig is om rekening te houden met type-implementaties. Voor de runtime bestaat een type niet buiten de context van een assembly.

Een assembly definieert de volgende informatie:

  • Code die door de Common Language Runtime wordt uitgevoerd. Elke assembly kan slechts één ingangspunt hebben: DllMain, WinMainof Main.

  • De beveiligingsgrens. Een assembly is de eenheid waar machtigingen worden aangevraagd en verleend. Voor meer informatie over beveiligingsgrenzen in assembly's, zie Beveiligingsoverwegingen voor assembly's.

  • De typegrens. 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 type MyType dat wordt geladen in het bereik van een andere assembly.

  • De grens van het referentiebereik: 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. Common Intermediate Language (CIL)-code in een Portable Executable (PE)-bestand zal niet worden uitgevoerd, tenzij het een geassocieerd assemblymanifest heeft.

  • De versiegrens. De assembly is de kleinste versieerbare eenheid in de gemeenschappelijke taal-runtime. Alle typen en resources in dezelfde assembly zijn geversied als een eenheid. In het assemblymanifest worden de versieafhankelijkheden beschreven die u opgeeft voor afhankelijke assembly's. Zie Assembly-versiebeheer voor meer informatie over versiebeheer.

  • De implementatie-eenheid: wanneer een toepassing wordt gestart, moeten alleen de assembly's die de toepassing in eerste instantie aanroept aanwezig zijn. Andere assemblies, zoals assemblies met lokalisatiebronnen of hulpprogrammaklassen, kunnen op verzoek worden opgehaald. Met dit proces kunnen apps eenvoudig en dun zijn wanneer ze voor het eerst worden gedownload. Raadpleeg Toepassingen implementeren voor meer informatie over het implementeren van assembly's.

  • Een side-by-side uitvoeringseenheid: 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 assemblies worden opgeslagen op een 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 schijf voordat ze worden uitgevoerd. U kunt dynamische assembly's opslaan op schijf nadat ze zijn uitgevoerd.

Er zijn verschillende manieren om samenstellingen te maken. U kunt ontwikkelhulpprogramma's gebruiken, zoals Visual Studio die .dll - of .exe-bestanden kunnen maken. U kunt hulpprogramma's in de Windows SDK gebruiken om assembly's te maken met modules uit andere ontwikkelomgevingen. U kunt ook common language runtime-API's 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.

Opmerking

Als u een assembly wilt bouwen in Visual Studio, selecteert u Build in het menu Build.

Assemblymanifest

Elke assembly heeft een assembly-manifestbestand. Net als bij een inhoudsopgave bevat het assemblymanifest:

  • De identiteit van de assembly (de naam en versie).

  • Een bestandstabel die alle andere bestanden beschrijft die deel uitmaken van de assembly, zoals andere assemblies die u hebt gemaakt waarop uw .exe of .dll-bestand vertrouwt, 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.

Assembly's bevatten informatie over inhoud, versiebeheer en afhankelijkheden. De toepassingen die ze gebruiken, hoeven dus 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 .NET-gebaseerde toepassing installeren door simpelweg de bestanden naar de doelcomputer te kopiëren. Zie Assembly-manifest voor meer informatie.

Een verwijzing naar een assembly toevoegen

Als u een assembly in een toepassing wilt gebruiken, moet u er een verwijzing naar toevoegen. Wanneer 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.

Opmerking

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 NuGet Package Manager 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 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.

Titel Beschrijving
Assemblyinhoud Elementen waaruit een assembly bestaat.
Assemblymanifest Gegevens in het assembly-manifest en hoe deze worden opgeslagen in assemblies.
Globale assembly-cache Hoe de GAC assemblies opslaat en gebruikt.
Sterk-naam assemblies Kenmerken van sterk benoemde assembly's.
Overwegingen voor de beveiliging van assemblies Hoe beveiliging werkt met assemblies.
Assemblerversiebeheer Overzicht van het .NET Framework-versiebeheerbeleid.
Montageplaatsing Waar assemblages vinden.
Assemblies en parallelle uitvoering Gebruik meerdere versies van de runtime of een assembly tegelijk.
Dynamische methoden en assemblies genereren Dynamische assemblages maken.
Hoe de runtime assemblies zoekt Hoe .NET Framework assemblyverwijzingen tijdens runtime oplost.

Referentie

System.Reflection.Assembly

Zie ook