Assemblys mit starkem NamenStrong-Named Assemblies

Durch die Vergabe eines starken Namens erhalten Assemblys eine eindeutige Identität. Außerdem werden Assemblykonflikte verhindert.Strong-naming an assembly creates a unique identity for the assembly, and can prevent assembly conflicts.

Wodurch zeichnet sich eine Assembly mit starkem Namen aus?What makes a strong-named assembly?

Eine Assembly mit starkem Namen wird mithilfe des privaten Schlüssels generiert, der zu dem mit der Assembly verteilten öffentlichen Schlüssel gehört, sowie der Assembly selbst.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. Die Assembly enthält das Assemblymanifest, das seinerseits die Namen und Hashs aller Dateien enthält, aus denen die Assembly besteht.The assembly includes the assembly manifest, which contains the names and hashes of all the files that make up the assembly. Assemblys mit demselben starken Namen sollten identisch sein.Assemblies that have the same strong name should be identical.

Sie können Assemblys mit starkem Namen mithilfe von Visual Studio oder einem Befehlszeilentool erstellen.You can strong-name assemblies by using Visual Studio or a command-line tool. Weitere Informationen finden Sie unter Vorgehensweise: Signieren einer Assembly mit einem starken Namen oder Sn.exe (Strong Name-Tool).For more information, see How to: Sign an Assembly with a Strong Name or Sn.exe (Strong Name Tool).

Assemblys mit starkem Namen enthalten den einfachen Textnamen der Assembly, die Versionsnummer, optionale Kulturinformationen, eine digitale Signatur und den öffentlichen Schlüssel, der zu dem für die Signierung verwendeten privaten Schlüssel gehört.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.

Warnung

Verlassen Sie sich für die Sicherheit nicht auf starke Namen.Do not rely on strong names for security. Diese Namen bieten lediglich eine eindeutige Identität.They provide a unique identity only.

Warum sollten Sie starke Namen für Ihre Assemblys vergeben?Why strong-name your assemblies?

Wenn Sie auf eine Assembly mit einem starken Namen verweisen, erhalten Sie dadurch bestimmte Vorteile, z. B. Versions- und Namensschutz.When you reference a strong-named assembly, you can expect certain benefits, such as versioning and naming protection. Assemblys mit starkem Namen können im globalen Assemblycache installiert werden, der erforderlich ist, um einige Szenarios zu ermöglichen.Strong-named assemblies can be installed in the Global Assembly Cache, which is required to enable some scenarios.

Assemblys mit starkem Namen sind in den folgenden Szenarien nützlich:Strong-named assemblies are useful in the following scenarios:

  • Auf Ihre Assemblys kann durch Assemblys mit starkem Namen verwiesen werden. Alternativ können Sie den friend-Zugriff auf Ihre Assemblys von anderen Assemblys mit starkem Namen ermöglichen.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.

  • Für eine App ist der Zugriff auf verschiedene Versionen derselben Assembly erforderlich.An app needs access to different versions of the same assembly. Das bedeutet, dass Sie verschiedene Versionen einer Assembly in derselben App-Domäne nebeneinander ohne Konflikte laden müssen.This means you need different versions of an assembly to load side by side in the same app domain without conflict. Wenn z. B. verschiedene Erweiterungen einer API in Assemblys mit demselben einfachen Namen existieren, können Sie durch die Vergabe von starken Namen eine eindeutige Identität für die einzelnen Versionen der Assembly vergeben.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.

  • Die Assembly sollte domänenneutral sein, um eine Beeinträchtigung der Leistung der Apps zu vermeiden, die auf Ihre Assembly zugreifen.You do not want to negatively affect performance of apps using your assembly, so you want the assembly to be domain neutral. Dies erfordert starke Namen, da eine domänenneutrale Assembly im globalen Assemblycache installiert werden muss.This requires strong-naming because a domain-neutral assembly must be installed in the global assembly cache.

  • Wenn Sie den Service für Ihre App durch Anwendung einer Herausgeberrichtlinie zentralisieren möchten (d.h. wenn die Assembly im globalen Assemblycache installiert ist).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.

Wenn Sie Open Source-Entwickler sind und die Vorzüge von Assemblys mit starkem Namen kennen lernen möchten, können Sie unter Umständen den privaten Schlüssel einer Assembly zusammen in Ihr Quellcodeverwaltungssystem einchecken.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.

Siehe auchSee Also

Globaler AssemblycacheGlobal Assembly Cache
Vorgehensweise: Signieren einer Assembly mit einem starken NamenHow to: Sign an Assembly with a Strong Name
Sn.exe (Strong Name-Tool)Sn.exe (Strong Name Tool)
Erstellen und Verwenden von Assemblys mit starkem NamenCreating and Using Strong-Named Assemblies