Partager via


Noms forts

La solution aux problèmes évoqués précédemment consiste à associer plus fortement une build distincte d'un assembly de composants avec l'application cliente. La build distincte est indiquée par la combinaison d'un numéro de version et d'une valeur spéciale nommée originator. Le système peut alors isoler ces assemblys de composants de sorte que différentes versions puissent être exécutées en même temps pour différentes applications clientes. Ceci n'était pas possible jusqu'à présent. Ce système de protection est parfois appelé exécution côte à côte (en opposition à l'exécution compatible en amont) car les applications peuvent exécuter simultanément d'autres versions des mêmes applications sans affecter leurs environnements d'exécution respectifs.

Le code illustrant l'ajout de ces attributs de build et la création d'un composant partageable protégé est disponible dans le sous-répertoire 4_Shared. Basée sur le code dans 3_SimplePath, cette étape ajoute un second composant partageable, qui inverse un tableau de chaînes.

En premier lieu, vous allez créer cet assembly de composant sans spécifier d'options qui pourraient le rendre partageable. Si vous compilez simplement le nouveau composant Reverser.dll à l'aide de BuildNoShare.bat (placé dans le sous-répertoire \4_Shared\) par exemple, vous pourrez alors observer les métadonnées en utilisant Ildasm.exe qui montre que l'assembly ne dispose pas d'originator et n'a pas de numéro de version établi :

.assembly Reverser
{  ...
  .hash algorithm 0x00008004
  .ver 0:0:0:0
}

Pour marquer un assembly comme partageable, vous devez le compiler en utilisant une clé privée. (Les clés publiques sont utilisées à des fins de vérification.) Avant de compiler, vous devez donc générer une paire de clés publique/privée. Utilisez l'outil Strong Name Tool (Nom fort) (Sn.exe) pour générer une paire de clés et pour la placer dans un fichier (situé dans le répertoire \4_Shared\Reverser) :

sn –k orgKey.snk

Vous disposez à présent d'une clé privée. Vous pouvez maintenant compiler le composant, en spécifiant le fichier de clé et le numéro de version à assigner. Pour cela, spécifiez les attributs AssemblyVersion et AssemblyKeyFile dans le fichier Reverser.cs à l'aide du symbole de compilation conditionnelle STRONG :

#if STRONG
[assembly: System.Reflection.AssemblyVersion("1.0.0.0")]
[assembly: System.Reflection.AssemblyKeyFile("orgKey.snk")]
#endif

Vous devez ensuite définir STRONG dans le processus de compilation :

csc.exe /define:STRONG ... Reverser.cs

Si vous exécutez à nouveau Ildasm.exe sur Reverser.dll, vous pouvez vérifier que l'assembly est maintenant partageable, comme indiqué par la présence d'une propriété .publickey et d'une propriété .ver qui ne contient pas la valeur par défaut 1.0.0.0 :

.assembly Reverser
{  ...
  .publickey = (00 ... FC 4A DC 9B 9C)
  .hash algorithm 0x00008004
  .ver 1:0:0:0
}

Pour plus d'informations sur l'outil Strong Name Tool (SN.exe), consultez la section concernant cet utilitaire à l'annexe B : Outils d'empaquetage et de déploiement de ce didacticiel.

Voir aussi

Déploiement de composants partagés | (5) Versioning des composants | Résumé de l'empaquetage et du déploiement | Annexe A : Informations supplémentaires sur l'empaquetage et le déploiement | Annexe B : Outils d'empaquetage et de déploiement