Assemblys avec nom fort

Attribuer un nom fort à un assembly permet de lui créer une identité unique pour prévenir d'éventuels conflits entre les assemblys.

Qu'est-ce qu'un assembly avec nom fort ?

Un assembly avec nom fort est généré à l'aide de la clé privée qui correspond à la clé publique distribuée avec l'assembly et de l'assembly lui-même. L'assembly inclut le manifeste d'assembly, qui contient les noms et les hachages de tous les fichiers qui le composent. Les assemblys portant le même nom fort doivent être identiques.

Pour attribuer un nom fort à un assembly, vous pouvez utiliser Visual Studio ou un outil en ligne de commande. Pour plus d’informations, consultez Guide pratique pour signer un assembly avec un nom fort ou Sn.exe (outil Strong Name).

Quand vous créez un assembly avec nom fort, il contient son nom de texte simple, son numéro de version, d'éventuelles informations sur sa culture, une signature numérique et la clé publique qui correspond à la clé privée utilisée pour la signature.

Avertissement

Ne comptez pas sur les noms forts pour la sécurité. Ils fournissent seulement une identité unique.

Pourquoi attribuer un nom fort à vos assemblys ?

Pour .NET Framework, les assemblys avec nom fort s’avèrent utiles dans les scénarios suivants :

  • Vous voulez autoriser le référencement de vos assemblys par des assemblys avec nom fort ou vous souhaitez accorder un accès friend à vos assemblys à partir d'autres assemblys avec nom fort.

  • Une application a besoin d'accéder à différentes versions du même assembly. Les différentes versions d’un assembly doivent donc pouvoir se charger côte à côte dans le même domaine d’application sans générer de conflits. Par exemple, si différentes extensions d'une API existent dans des assemblys qui portent le même nom simple, l'attribution d'un nom fort fournit une identité unique à chaque version de l'assembly.

  • Vous souhaitez que votre assembly soit indépendant du domaine pour ne pas entraîner de baisse des performances des applications utilisant cet assembly. Comme un assembly indépendant du domaine doit être installé dans le Global Assembly Cache, cela nécessite d'attribuer des noms forts.

  • Vous voulez centraliser le traitement de votre application en appliquant une stratégie d’éditeur, ce qui implique d’installer l’assembly dans le Global Assembly Cache.

Pour .NET Core et .NET 5+, les assemblys à nom fort n’offrent pas d’avantages matériels. Le runtime ne valide jamais la signature de nom fort, ni n’utilise le nom fort pour la liaison d’assembly.

Si vous êtes développeur open source et que vous voulez bénéficier des avantages en matière d’identité d’un assembly avec nom fort pour une meilleure compatibilité avec .NET Framework, pensez à archiver la clé privée associée à l’assembly dans votre système de contrôle de code source.

Voir aussi