Assemblys dans .NETAssemblies in .NET

Les assemblys constituent l’unité fondamentale dans le déploiement, la gestion de version, la portée d’activation et les autorisations de sécurité d’une application .NET.Assemblies form the fundamental unit of deployment, version control, reuse, activation scoping, and security permissions for a .NET-based application. Les assemblys prennent la forme d’un fichier exécutable (.exe) ou d’un fichier de bibliothèque de liens dynamiques (.dll) et sont les blocs de construction des applications .NET.Assemblies take the form of an executable (.exe) file or dynamic link library (.dll) file, and are the building blocks of the .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. Vous pouvez comparer un assembly à une collection de types et de ressources conçus pour opérer ensemble et former une unité logique de fonctionnalité.You can think of an assembly as a collection of types and resources that form a logical unit of functionality and are built to work together.

Dans .NET Core et .NET Framework, un assembly peut être créé à partir d’un ou plusieurs fichiers de code source.In .NET Core and .NET Framework, an assembly can be built 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. Ainsi, les projets plus importants peuvent être planifiés de sorte que plusieurs développeurs individuels travaillent sur des modules ou fichiers de code source distincts, qui sont regroupés pour créer un assembly unique.This allows larger projects to be planned in such a way that several individual developers work on separate source code files or modules, which are combined to create a single assembly. Pour plus d’informations sur les modules, consultez Guide pratique pour 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 un assembly entre des applications en le plaçant dans le Global Assembly Cache.For libraries that target the .NET Framework, you can share an assembly between applications by putting it in the global assembly cache. Les assemblys doivent avoir un nom fort avant d’être inclus dans le GAC.Assemblies must be strong-named before they can be included in the global assembly cache. 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 are not used, they are not 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 uniquement pour l’inspecter en utilisant la classe MetadataLoadContext.You can load an assembly only to inspect by using the MetadataLoadContext class.

Manifeste d'assemblyAssembly manifest

Tous les assemblys contiennent un manifeste d’assembly.Within every assembly is an assembly manifest. Semblable à une table des matières, le manifeste d’assembly contient les éléments suivants :Similar to a table of contents, the assembly manifest contains the following:

  • 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, par exemple, les autres assemblys que vous avez créés et qui sont utilisés par votre fichier .exe ou .dll, ou même des fichiers bitmap ou Readme.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, or even bitmap or Readme files.

  • Une liste de référence de l’assembly, qui est une liste de toutes les dépendances externes, fichiers .dll ou autres, nécessaires à votre application qui ont été créés par quelqu’un d’autre.An assembly reference list, which is a list of all external dependencies — .dlls or other files your application needs that may have been created by someone else. 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, ils sont associés à un runtime .NET Core particulier.In .NET Core, they are coupled with a particular .NET Core runtime. Dans .NET Framework, ils se trouvent dans le Global Assembly Cache.In .NET Framework, they reside in the global assembly cache. L’espace de noms System.IO est un exemple d’un assembly dans le Global Assembly Cache.The System.IO namespace is an example of an assembly in the global assembly cache. Les objets privés doivent être dans un répertoire au même niveau ou à un niveau inférieur que celui du répertoire dans lequel votre application est installée.Private objects must be in a directory at either the same level as or below the directory in which your application is installed.

Comme les assemblys contiennent des informations sur le contenu, la gestion de versions et les dépendances, les applications qui les utilisent n’ont pas besoin de dépendre des valeurs du Registre Windows pour fonctionner correctement.Because assemblies contain information about content, versioning, and dependencies, the applications that use them need not rely on Windows registry values to function properly. Les assemblys réduisent les conflits de fichiers .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 d’assembly.For more information, see Assembly Manifest.

Ajout d’une référence à un assemblyAdding a reference to an assembly

Pour utiliser un assembly, vous devez y ajouter une référence.To use an assembly, you must add a reference to it. Ensuite, vous pouvez utiliser la directive using pour C# ou l’instruction Imports pour que Visual Basic choisisse l’espace de noms des éléments que vous souhaitez utiliser.Next, you can use the using directive for C# or Imports statement for Visual Basic to choose the namespace of the items you want to use. Une fois qu’un assembly est référencé et importé, tous les types, propriétés, méthodes accessibles et les autres membres de ses espaces de noms sont disponibles pour votre application comme si leur code faisait partie de votre fichier source.Once an assembly is referenced and imported, 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. Dans certains cas, cependant, un assembly système peut ne pas être référencé automatiquement.In some cases, though, a system assembly may not automatically be referenced. Dans .NET Core, vous pouvez ajouter une référence au package NuGet qui contient l’assembly à l’aide du Gestionnaire de packages NuGet dans Visual Studio ou en ajoutant un élément <PackageReference> pour l’assembly au projet *.csproj ou *.vbproj.In .NET Core, you can add a reference to the NuGet package that contains the assembly either by using NuGet Package Manager in Visual Studio or by adding 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 à l’aide de l’option de ligne de commande -reference pour les compilateurs C# 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.

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

Création d’un assemblyCreating an assembly

Compilez votre application en la créant directement dans Visual Studio, en la générant à partir de la ligne de commande à l’aide des outils de l’interface de ligne de commande (CLI) .NET Core, ou en générant des assemblys .NET Framework avec un compilateur de ligne de commande.Compile your application by building it in Visual Studio, by building it from the command line by using .NET Core command-line interface (CLI) tools, or by building .NET Framework assemblies with a command-line compiler. Pour plus d’informations sur la création d’assemblys à l’aide des outils CLI .NET, consultez Outils de l’interface de ligne de commande (CLI) .NET Core.For more information about building assemblies using .NET CLI tools, see .NET Core command-line interface (CLI) tools. Pour la création d’assemblys avec les compilateurs de ligne de commande, consultez Générer avec la ligne de commande avec csc.exe pour C# et Génération à 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# and Building from the Command Line for Visual Basic.

Notes

Pour générer un assembly dans Visual Studio, dans le menu Générer, choisissez Générer.To build an assembly in Visual Studio, on the Build menu choose Build.

Voir aussiSee also