Assemblys dans .NETAssemblies in .NET

Les assemblys constituent les unités fondamentales de déploiement, de contrôle de version, de réutilisation, de portée d’activation et d’autorisations de sécurité pour. Applications basées sur le réseau.Assemblies form the fundamental units of deployment, version control, reuse, activation scoping, and security permissions for .NET-based applications. Un assembly est une collection de types et de ressources conçus pour opérer ensemble et former une unité logique de fonctionnalité.An assembly is a collection of types and resources that are built to work together and form a logical unit of functionality. Les assemblys prennent la forme de fichiers exécutables ( . exe) ou de bibliothèques de liens dynamiques ( . dll), et sont les blocs de construction des applications .net.Assemblies take the form of executable (.exe) or dynamic link library (.dll) files, and are the building blocks of .NET applications. Ils fournissent au Common Language Runtime les informations dont il a besoin pour connaître les implémentations de type.They provide the common language runtime with the information it needs to be aware of type implementations.

Dans .NET Core et .NET Framework, vous pouvez créer un assembly à partir d’un ou de plusieurs fichiers de code source.In .NET Core and .NET Framework, you can build an assembly from one or more source code files. Dans .NET Framework, les assemblys peuvent contenir un ou plusieurs modules.In .NET Framework, assemblies can contain one or more modules. Cela permet de planifier des projets plus volumineux de manière à ce que plusieurs développeurs puissent travailler sur des modules ou des fichiers de code source distincts, qui sont combinés pour créer un assembly unique.This allows larger projects to be planned so that several developers can work on separate source code files or modules, which are combined to create a single assembly. Pour plus d’informations sur les modules, consultez Comment : générer un assembly multifichier.For more information about modules, see How to: Build a multifile assembly.

Les assemblys ont les propriétés suivantes :Assemblies have the following properties:

  • Les assemblys sont implémentés en tant que fichiers. exe ou . dll .Assemblies are implemented as .exe or .dll files.

  • Pour les bibliothèques qui ciblent le .NET Framework, vous pouvez partager des assemblys entre les applications en les plaçant dans le global assembly cache (GAC).For libraries that target the .NET Framework, you can share assemblies between applications by putting them in the global assembly cache (GAC). Vous devez nommer les assemblys avec nom fort avant de pouvoir les inclure dans le GAC.You must strong-name assemblies before you can include them in the GAC. Pour plus d’informations, consultez assemblys avec nom fort.For more information, see Strong-named assemblies.

  • Les assemblys sont chargés en mémoire uniquement s’ils sont requis.Assemblies are only loaded into memory if they are required. S’ils ne sont pas utilisés, ils ne sont pas chargés.If they aren't used, they aren't loaded. Cela signifie que les assemblys peuvent être un moyen efficace pour gérer les ressources dans les grands projets.This means that assemblies can be an efficient way to manage resources in larger projects.

  • Vous pouvez obtenir par programme des informations sur un assembly à l’aide de la réflexion.You can programmatically obtain information about an assembly by using reflection. Pour plus d’informations, consultez Réflexion (C#) ou Réflexion (Visual Basic).For more information, see Reflection (C#) or Reflection (Visual Basic).

  • Vous pouvez charger un assembly simplement pour l’inspecter à l’aide de la classe MetadataLoadContext dans .NET Core et des méthodes Assembly.ReflectionOnlyLoad ou Assembly.ReflectionOnlyLoadFrom dans .NET Core et .NET Framework.You can load an assembly just to inspect it by using the MetadataLoadContext class in .NET Core and the Assembly.ReflectionOnlyLoad or Assembly.ReflectionOnlyLoadFrom methods in .NET Core and .NET Framework.

Assemblys dans le common language runtimeAssemblies in the common language runtime

Les assemblys fournissent le common language runtime avec les informations dont il a besoin pour connaître les implémentations de type.Assemblies provide the common language runtime with the information it needs to be aware of type implementations. Pour le runtime, un type n'existe pas en dehors du contexte d'un assembly.To the runtime, a type does not exist outside the context of an assembly.

Un assembly définit les informations suivantes :An assembly defines the following information:

  • Code que l’common language runtime exécute.Code that the common language runtime executes. Notez que chaque assembly ne peut avoir qu’un seul point d’entrée : DllMain, WinMain ou Main.Note that each assembly can have only one entry point: DllMain, WinMain, or Main.

  • Limite de sécurité.Security boundary. Un assembly est l'unité au niveau de laquelle les autorisations sont demandées et octroyées.An assembly is the unit at which permissions are requested and granted. Pour plus d’informations sur les limites de sécurité dans les assemblys, consultez Considérations sur la sécuritédes assemblys.For more information about security boundaries in assemblies, see Assembly security considerations.

  • Limite de type.Type boundary. L'identité de chaque type inclut le nom de l'assembly dans lequel il réside.Every type's identity includes the name of the assembly in which it resides. Un type appelé MyType chargé dans l'étendue d'un assembly n'est pas le même qu'un type appelé MyType chargé dans l'étendue d'un autre assembly.A type called MyType that is loaded in the scope of one assembly is not the same as a type called MyType that is loaded in the scope of another assembly.

  • Limite d’étendue de référence.Reference scope boundary. Le manifeste d’assembly a des métadonnées qui sont utilisées pour résoudre les types et satisfaire les demandes de ressources.The assembly manifest has metadata that is used for resolving types and satisfying resource requests. Le manifeste spécifie les types et les ressources à exposer en dehors de l’assembly, et énumère les autres assemblys dont il dépend.The manifest specifies the types and resources to expose outside the assembly, and enumerates other assemblies on which it depends. Le code MSIL (Microsoft Intermediate Language) dans un fichier exécutable portable (PE) ne sera pas exécuté à moins qu’il n’ait un manifeste d’assemblyassocié.Microsoft intermediate language (MSIL) code in a portable executable (PE) file won't be executed unless it has an associated assembly manifest.

  • Limite de version.Version boundary. L’assembly est la plus petite unité de versionable dans le common language runtime.The assembly is the smallest versionable unit in the common language runtime. Tous les types et toutes les ressources dans le même assembly sont associés à une version en tant qu’unité.All types and resources in the same assembly are versioned as a unit. Le manifeste d’assembly décrit les dépendances de version que vous spécifiez pour tous les assemblys dépendants.The assembly manifest describes the version dependencies you specify for any dependent assemblies. Pour plus d’informations sur le contrôle de version, consultez contrôle de version des assemblys.For more information about versioning, see Assembly versioning.

  • Unité de déploiement.Deployment unit. Quand une application démarre, seuls les assemblys qu'elle appelle initialement doivent être présents.When an application starts, only the assemblies that the application initially calls must be present. D’autres assemblys, tels que les assemblys contenant des ressources de localisation ou des classes utilitaires, peuvent être récupérés à la demande.Other assemblies, such as assemblies containing localization resources or utility classes, can be retrieved on demand. Cela permet aux applications d’être simples et légères lors de leur premier téléchargement.This allows apps to be simple and thin when first downloaded. Pour plus d’informations sur le déploiement d’assemblys, consultez déployer des applications.For more information about deploying assemblies, see Deploy applications.

  • Unité d’exécution côte à côte.Side-by-side execution unit. Pour plus d’informations sur l’exécution de plusieurs versions d’un assembly, consultez assemblys et exécution côte à côte.For more information about running multiple versions of an assembly, see Assemblies and side-by-side execution.

Créer un assemblyCreate an assembly

Les assemblys peuvent être statiques ou dynamiques.Assemblies can be static or dynamic. Les assemblys statiques sont stockés sur le disque dans des fichiers exécutables portables (PE).Static assemblies are stored on disk in portable executable (PE) files. Les assemblys statiques peuvent inclure des interfaces, des classes et des ressources telles que des bitmaps, des fichiers JPEG et d’autres fichiers de ressources.Static assemblies can include interfaces, classes, and resources like bitmaps, JPEG files, and other resource files. Vous pouvez également créer des assemblys dynamiques, qui sont exécutés directement à partir de la mémoire et ne sont pas enregistrés sur le disque avant l’exécution.You can also create dynamic assemblies, which are run directly from memory and aren't saved to disk before execution. Vous pouvez enregistrer des assemblys dynamiques sur le disque une fois qu'ils ont été exécutés.You can save dynamic assemblies to disk after they have executed.

Pour créer des assemblys, différentes possibilités s'offrent à vous.There are several ways to create assemblies. Vous pouvez utiliser des outils de développement, tels que Visual Studio, qui peuvent créer des fichiers . dll ou. exe .You can use development tools, such as Visual Studio, that can create .dll or .exe files. Vous pouvez utiliser les outils de la SDK Windows pour créer des assemblys avec des modules à partir d’autres environnements de développement.You can use tools in the Windows SDK to create assemblies with modules from other development environments. Vous pouvez également utiliser les API du Common Language Runtime, comme System.Reflection.Emit, pour créer des assemblys dynamiques.You can also use common language runtime APIs, such as System.Reflection.Emit, to create dynamic assemblies.

Compilez les assemblys en les générant dans Visual Studio, en les créant avec des outils d’interface de ligne de commande .NET Core ou en générant des assemblys .NET Framework avec un compilateur de ligne de commande.Compile assemblies by building them in Visual Studio, building them with .NET Core command-line interface tools, or building .NET Framework assemblies with a command-line compiler. Pour plus d’informations sur la création d’assemblys à l’aide des outils de l’interface de ligne de commande .NET Core, consultez outils de l’interface de ligne de commande .net Core.For more information about building assemblies using .NET Core command-line interface tools, see .NET Core command-line interface tools. Pour générer des assemblys avec les compilateurs de ligne de commande, consultez génération à partir de la ligne de commande avec CSC. exe pour C#ou créez à partir de la ligne de commande pour Visual Basic.For building assemblies with the command-line compilers, see Command-line build with csc.exe for C#, or Build from the command line for Visual Basic.

Notes

Pour générer un assembly dans Visual Studio, dans le menu générer , sélectionnez générer.To build an assembly in Visual Studio, on the Build menu, select Build.

Manifeste d'assemblyAssembly manifest

Chaque assembly possède un fichier manifeste de l' assembly .Every assembly has an assembly manifest file. À l’instar d’une table des matières, le manifeste de l’assembly contient les éléments suivants :Similar to a table of contents, the assembly manifest contains:

  • L’identité de l’assembly (nom et version).The assembly's identity (its name and version).

  • Une table de fichiers décrivant tous les autres fichiers qui composent l’assembly, tels que les autres assemblys que vous avez créés et sur lesquels votre fichier . exe ou . dll s’appuie, des fichiers bitmap ou des fichiers Lisez-moi.A file table describing all the other files that make up the assembly, such as other assemblies you created that your .exe or .dll file relies on, bitmap files, or Readme files.

  • Une liste de références d’assembly, qui est une liste de toutes les dépendances externes, telles que les fichiers . dllou autres.An assembly reference list, which is a list of all external dependencies, such as .dlls or other files. Les références de l’assembly contiennent des références aux objets globaux et privés.Assembly references contain references to both global and private objects. Les objets globaux sont disponibles pour toutes les autres applications.Global objects are available to all other applications. Dans .NET Core, les objets globaux sont associés à un Runtime .NET Core particulier.In .NET Core, global objects are coupled with a particular .NET Core runtime. Dans .NET Framework, les objets globaux résident dans le Global Assembly Cache (GAC).In .NET Framework, global objects reside in the global assembly cache (GAC). System. IO. dll est un exemple d’assembly dans le GAC.System.IO.dll is an example of an assembly in the GAC. Les objets privés doivent se trouver dans un répertoire au niveau ou au-dessous du répertoire dans lequel votre application est installée.Private objects must be in a directory level at or below the directory in which your app is installed.

Étant donné que les assemblys contiennent des informations sur le contenu, le contrôle de version et les dépendances, les applications qui les utilisent ne s’appuient pas sur des sources externes, telles que le registre sur les systèmes Windows, pour fonctionner correctement.Because assemblies contain information about content, versioning, and dependencies, the applications that use them needn't rely on external sources, such as the registry on Windows systems, to function properly. Les assemblys réduisent les conflits de dll et rendent vos applications plus fiables et plus faciles à déployer.Assemblies reduce .dll conflicts and make your applications more reliable and easier to deploy. Dans de nombreux cas, vous pouvez installer une application .NET simplement en copiant ses fichiers sur l’ordinateur cible.In many cases, you can install a .NET-based application simply by copying its files to the target computer. Pour plus d’informations, consultez manifeste de l' assembly.For more information, see Assembly manifest.

Ajouter une référence à un assemblyAdd a reference to an assembly

Pour utiliser un assembly dans une application, vous devez lui ajouter une référence.To use an assembly in an application, you must add a reference to it. Une fois qu’un assembly est référencé, tous les types, propriétés, méthodes et autres membres accessibles de ses espaces de noms sont disponibles pour votre application comme si leur code faisaient partie de votre fichier source.Once an assembly is referenced, all the accessible types, properties, methods, and other members of its namespaces are available to your application as if their code were part of your source file.

Notes

La plupart des assemblys à partir de la bibliothèque de classes .NET sont référencés automatiquement.Most assemblies from the .NET Class Library are referenced automatically. Si un assembly système n’est pas automatiquement référencé, pour .NET Core, vous pouvez ajouter une référence au package NuGet qui contient l’assembly.If a system assembly isn't automatically referenced, for .NET Core, you can add a reference to the NuGet package that contains the assembly. Utilisez le gestionnaire de package NuGet dans Visual Studio ou ajoutez un <PackageReference > élément de l’assembly au projet . csproj ou . vbproj .Either use the NuGet Package Manager in Visual Studio, or add a <PackageReference> element for the assembly to the .csproj or .vbproj project. Dans .NET Framework, vous pouvez ajouter une référence à l’assembly à l’aide de la boîte de dialogue Ajouter une référence dans Visual Studio, ou en utilisant l' C# option de ligne de commande -reference pour les compilateurs ou Visual Basic .In .NET Framework, you can add a reference to the assembly by using the Add Reference dialog in Visual Studio, or by using the -reference command line option for the C# or Visual Basic compilers.

Dans C#, vous pouvez utiliser deux versions du même assembly dans une même application.In C#, you can use two versions of the same assembly in a single application. Pour plus d’informations, consultez extern alias.For more information, see extern alias.

TitreTitle DescriptionDescription
Contenu de l’assemblyAssembly contents Éléments qui composent un assembly.Elements that make up an assembly.
Manifeste d’assemblyAssembly manifest Les données dans le manifeste de l’assembly et la manière dont elles sont stockées dans les assemblys.Data in the assembly manifest, and how it is stored in assemblies.
Global assembly cacheGlobal assembly cache Comment le GAC stocke et utilise les assemblys.How the GAC stores and uses assemblies.
Assemblys avec nom fortStrong-named assemblies Caractéristiques des assemblys avec nom fort.Characteristics of strong-named assemblies.
Considérations sur la sécurité des assemblysAssembly security considerations Fonctionnement de la sécurité avec les assemblys.How security works with assemblies.
Contrôle de version des assemblysAssembly versioning Vue d’ensemble de la stratégie de contrôle de version de .NET Framework.Overview of the .NET Framework versioning policy.
Emplacement de l’assemblyAssembly placement Où trouver les assemblys.Where to locate assemblies.
Assemblys et exécution côte à côteAssemblies and side-by-side execution Utilisez plusieurs versions du runtime ou d’un assembly simultanément.Use multiple versions of the runtime or an assembly simultaneously.
Émettre des méthodes et des assemblys dynamiquesEmit dynamic methods and assemblies Comment créer des assemblys dynamiques.How to create dynamic assemblies.
Méthode de localisation des assemblys par le runtimeHow the runtime locates assemblies Comment le .NET Framework résout les références d’assembly au moment de l’exécution.How the .NET Framework resolves assembly references at run time.

ReferenceReference

System.Reflection.Assembly

Voir aussiSee also