Guide pratique pour référencer un assembly avec un nom fort

Le référencement de types ou de ressources dans un assembly avec nom fort est généralement un processus transparent. Vous pouvez effectuer la référence au moment de la compilation (liaison anticipée) ou au moment de l’exécution.

Une référence au moment de la compilation se produit quand vous indiquez au compilateur que l’assembly référence explicitement un autre assembly. Quand vous utilisez le référencement au moment de la compilation, le compilateur obtient automatiquement la clé publique de l’assembly avec nom fort ciblé et la place dans la référence d’assembly de l’assembly compilé.

Notes

Un assembly avec nom fort peut uniquement utiliser les types d'autres assemblys avec nom fort. Si ce n'était pas le cas, la sécurité de l'assembly avec nom fort serait compromise.

Effectuer une référence au moment de la compilation à un assembly avec nom fort

Saisissez ensuite la commande suivante dans une invite de commandes :

<commande_compilateur>/reference:<nom_assembly>

Dans cette commande, commande_compilateur est la commande du compilateur pour le langage que vous utilisez, et nom_assembly est le nom de l’assembly avec nom fort référencé. Vous pouvez également utiliser d’autres options du compilateur, telles que /t:library, qui permet de créer un assembly de bibliothèque.

L’exemple suivant crée un assembly nommé myAssembly.dll qui référence un assembly avec nom fort nommé myLibAssembly.dll à partir d’un module de code nommé myAssembly.cs.

csc /t:library myAssembly.cs /reference:myLibAssembly.dll  

Effectuer une référence au moment de l’exécution à un assembly avec nom fort

Quand vous effectuez une référence d’assembly avec nom fort au moment de l’exécution, par exemple, en utilisant la méthode Assembly.Load ou Assembly.GetType, vous devez utiliser le nom complet de l’assembly avec nom fort référencé. La syntaxe d’un nom complet est la suivante :

<nom_assembly>,<numéro_version>,<culture>,<jeton_clé_publique>

Par exemple :

myDll, Version=1.1.0.0, Culture=en, PublicKeyToken=03689116d3a4ae33

Dans cet exemple, PublicKeyToken est la forme hexadécimale du jeton de clé publique. S’il n’existe aucune valeur de culture, utilisez Culture=neutral.

L’exemple de code suivant montre comment utiliser ces informations avec la méthode Assembly.Load.

Assembly^ myDll =
    Assembly::Load("myDll, Version=1.0.0.1, Culture=neutral, PublicKeyToken=9b35aa32c18d4fb1");
Assembly myDll =
    Assembly.Load("myDll, Version=1.0.0.1, Culture=neutral, PublicKeyToken=9b35aa32c18d4fb1");
Dim myDll As Assembly = _
    Assembly.Load("myDll, Version=1.0.0.1, Culture=neutral, PublicKeyToken=9b35aa32c18d4fb1")

Vous pouvez imprimer le format hexadécimal de la clé publique et du jeton de clé publique pour un assembly spécifique en utilisant la commande Strong Name (Sn.exe) suivante :

sn -Tp <assembly>

Si vous avez un fichier de clé publique, vous pouvez utiliser la commande suivante (notez la différence de casse de l’option de ligne de commande) à la place :

sn -tp <fichier de clé publique>

Voir aussi