Génération d'un assembly multifichier
Vous pouvez créer des assemblys multifichiers à l'aide de compilateurs de ligne de commande ou de Visual Studio .NET avec les extensions managées pour C++. L'un des fichiers de l'assembly doit contenir le manifeste de l'assembly. Un assembly qui démarre une application doit également contenir un point d'entrée, tel que la méthode Main ou WinMain.
Supposons, par exemple, que vous possédiez une application contenant deux modules de code, Client.cs et Stringer.cs. Stringer.cs crée l'espace de noms myStringer
qui est référencé par le code contenu dans Client.cs. Client.cs contient la méthode Main
qui est le point d'entrée de l'application. Dans cet exemple, vous compilez les deux modules de code, puis vous créez un troisième fichier qui contient le manifeste de l'assembly, qui lance l'application. Le manifeste de l'assembly référence les modules Client
et Stringer
.
Remarque Les assemblys multifichiers ne peuvent avoir qu'un seul point d'entrée, même si l'assembly a plusieurs modules de code.
Il est possible de créer un assembly multifichier pour plusieurs raisons :
Pour combiner des modules écrits dans différents langages. Il s'agit de la raison la plus courante de créer un assembly multifichier.
Pour optimiser le téléchargement d'une application en plaçant des types rarement utilisés dans un module qui n'est téléchargé que lorsque cela est nécessaire.
Remarque Si vous créez des applications destinées à être téléchargées à l'aide de la balise <object> avec Microsoft Internet Explorer, vous devez créer des assemblys multifichiers. Dans ce scénario, vous créez un fichier distinct de vos modules de code, qui contient uniquement le manifeste de l'assembly. Internet Explorer télécharge d'abord le manifeste de l'assembly, puis crée des threads de travail pour télécharger tout assembly ou module supplémentaire requis. Pendant le téléchargement du fichier contenant le manifeste de l'assembly, Internet Explorer ne répondra pas aux entrées d'utilisateur. La durée de non-réponse d'Internet Explorer est proportionnelle à la taille du fichier contenant le manifeste de l'assembly.
Pour combiner des modules de code écrits par plusieurs développeurs. Même si chaque développeur peut compiler chaque module de code dans un assembly, ceci peut forcer l'exposition publique de certains types qui ne sont pas exposés si tous les modules sont placés dans un assembly multifichier.
Une fois l'assembly créé, vous pouvez signer le fichier qui contient le manifeste de l'assembly (donc, l'assembly) ou attribuer au fichier (et à l'assembly) un nom fort et le placer dans le cache de l'assembly global.
Pour créer un assembly multifichier
Compilez tous les fichiers contenant des espaces de noms référencés par d'autres modules de l'assembly dans des modules de code. L'extension par défaut des modules de code est .netmodule. Par exemple, si un fichier appelé
Stringer
crée un espace de noms appelémyStringer
référencé dans le code du fichier Client,Stringer
doit d'abord être compilé dans un module de code.Compilez tous les autres modules à l'aide des options du compilateur nécessaires pour indiquer les autres modules référencés dans le code.
Utilisez l'utilitaire Assembly Linker (Al.exe) pour créer le fichier de sortie qui contient le manifeste de l'assembly. Ce fichier contient des informations sur les références de tous les modules ou ressources faisant partie de l'assembly. Le manifeste peut agir comme le fichier exécutable pour l'application.
Remarque Vous ne pouvez utiliser l'interface IDE de Visual Studio .NET pour C# et Visual Basic que pour créer des assemblys à fichier unique. Si vous souhaitez créer des assemblys multifichiers, vous devez utiliser les compilateurs de ligne de commande ou Visual Studio .NET avec les extensions managées pour C++.
La section suivante contient un exemple d'assembly multifichier illustrant ces trois étapes.