Assemblys avec nom fortStrong-Named Assemblies

Attribuer un nom fort à un assembly permet de lui créer une identité unique pour prévenir d'éventuels conflits entre les assemblys.Strong-naming an assembly creates a unique identity for the assembly, and can prevent assembly conflicts.

Qu'est-ce qu'un assembly avec nom fort ?What makes a strong-named assembly?

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.A strong named assembly is generated by using the private key that corresponds to the public key distributed with the assembly, and the assembly itself. L'assembly inclut le manifeste d'assembly, qui contient les noms et les hachages de tous les fichiers qui le composent.The assembly includes the assembly manifest, which contains the names and hashes of all the files that make up the assembly. Les assemblys portant le même nom fort doivent être identiques.Assemblies that have the same strong name should be identical.

Pour attribuer un nom fort à un assembly, vous pouvez utiliser Visual Studio ou un outil en ligne de commande.You can strong-name assemblies by using Visual Studio or a command-line tool. Pour plus d'informations, voir Procédure : signer un assembly avec un nom fort ou Sn.exe (outil Strong Name Tool).For more information, see How to: Sign an Assembly with a Strong Name or Sn.exe (Strong Name Tool).

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.When a strong-named assembly is created, it contains the simple text name of the assembly, the version number, optional culture information, a digital signature, and the public key that corresponds to the private key used for signing.

Avertissement

Ne comptez pas sur les noms forts pour la sécurité.Do not rely on strong names for security. Ils fournissent seulement une identité unique.They provide a unique identity only.

Pourquoi attribuer un nom fort à vos assemblys ?Why strong-name your assemblies?

Lorsque vous référencez un assembly avec nom fort, vous pouvez en attendre certains avantages, tels que la protection du contrôle de version et de l'affectation de nom.When you reference a strong-named assembly, you can expect certain benefits, such as versioning and naming protection. Dans certains scénarios, les assemblys avec nom fort doivent impérativement être installés dans le Global Assembly Cache.Strong-named assemblies can be installed in the Global Assembly Cache, which is required to enable some scenarios.

Les assemblys avec nom fort s'avèrent utiles dans les scénarios suivants :Strong-named assemblies are useful in the following scenarios:

  • 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.You want to enable your assemblies to be referenced by strong-named assemblies, or you want to give friend access to your assemblies from other strong-named assemblies.

  • Une application a besoin d'accéder à différentes versions du même assembly.An app needs access to different versions of the same 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.This means you need different versions of an assembly to load side by side in the same app domain without conflict. 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.For example, if different extensions of an API exist in assemblies that have the same simple name, strong-naming provides a unique identity for each version of the 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.You do not want to negatively affect performance of apps using your assembly, so you want the assembly to be domain neutral. Comme un assembly indépendant du domaine doit être installé dans le Global Assembly Cache, cela nécessite d'attribuer des noms forts.This requires strong-naming because a domain-neutral assembly must be installed in the global assembly cache.

  • 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.When you want to centralize servicing for your app by applying publisher policy, which means the assembly must be installed in the global assembly cache.

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, pensez à archiver la clé privée associée à l'assembly dans votre système de contrôle de code source.If you are an open-source developer and you want the identity benefits of a strong-named assembly, consider checking in the private key associated with an assembly into your source control system.

Voir aussiSee also