Freigeben über


Assemblynamen

Der Name einer Assembly ist in den Metadaten gespeichert und wirkt sich entscheidend auf deren Gültigkeitsbereich und Verwendung durch eine Anwendung aus. Eine Assembly mit starkem Namen verfügt über einen vollqualifizierten Namen mit Namen, Kultur, öffentlichem Schlüssel und Versionsnummer der Assembly. Dieser Name wird häufig als Anzeigename bezeichnet. Für geladene Assemblys kann der Namen über die FullName-Eigenschaft abgerufen werden.

Anhand dieser Informationen wird die Assembly von der Laufzeit gefunden und von anderen Assemblys mit demselben Namen unterschieden. Eine Assembly mit starkem Namen, die den Namen myTypes hat, kann beispielsweise folgenden vollqualifizierten Namen besitzen:

myTypes, Version=1.0.1234.0, Culture=en-US, PublicKeyToken=b77a5c561934e089c, ProcessorArchitecture=msil

Hinweis

In .NET Framework, Version 2.0, wurde die Assemblyidentität durch Prozessorarchitektur ergänzt, um prozessorspezifische Versionen von Assemblys zu ermöglichen. Sie können Versionen einer Assembly erstellen, deren Identität sich nur durch die Prozessorarchitektur unterscheidet, z. B. prozessorspezifische 32-Bit- und 64-Bit-Versionen. Die Prozessorarchitektur ist für starke Namen nicht erforderlich. Weitere Informationen finden Sie unter System.Reflection.AssemblyName.ProcessorArchitecture.

Die Assembly mit starkem Namen gibt an, dass die myTypes-Assembly über einen vollqualifizierten Namen mit einem öffentlichen Schlüsseltoken, den Kulturwert für Englisch (USA) und die Versionsnummer 1.0.1234.0 verfügt. Ihre Prozessorarchitektur ist "msil". Dies bedeutet, dass sie je nach Betriebssystem und Prozessor in 32-Bit-Code oder 64-Bit-Code JIT-kompiliert (Just-In-Time) wird.

Code zum Anfordern von Typen in einer Assembly muss einen vollqualifizierten Namen einer Assembly verwenden. Dies wird als vollqualifizierte Bindung bezeichnet. Partielles Binden, bei dem nur ein Assemblyname angegeben wird, ist zum Verweisen auf Assemblys in .NET Framework unzulässig.

Alle Verweise auf Assemblys, aus denen sich das .NET Framework zusammensetzt, müssen ebenfalls die vollqualifizierten Namen der Assemblys verwenden. Der Verweis auf die System.Data-.NET Framework-Assembly für Version 1.0 lautet z. B. folgendermaßen:

      System.data, version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
    

Hinweis: Die Version entspricht der Versionsnummer aller .NET Framework-Assemblys, die im Lieferumfang von .NET Framework, Version 1.0, enthalten sind. Für .NET Framework-Assemblys ist die Kultur stets neutral, und der öffentliche Schlüssel ist mit dem im oben genannten Beispiel identisch.

Beispiel: Wenn Sie in einer Konfigurationsdatei einen Verweis auf eine Assembly hinzufügen möchten, um einen Ablaufverfolgungslistener einzurichten, müssen Sie den vollqualifizierten Namen der .NET Framework-Assembly des Systems angeben:

<add name="myListener" type="System.Diagnostics.TextWriterTraceListener, system version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="c:\myListener.log" />

Hinweis

Die Laufzeit berücksichtigt bei der Bindung an eine Assembly keine Groß- und Kleinschreibung von Assemblynamen, die in einem Assemblynamen verwendete Groß- und Kleinschreibung wird jedoch beibehalten. Mehrere Tools in .NET Framework SDK berücksichtigen Groß- und Kleinschreibung in Assemblynamen. Verwalten Sie alle Assemblynamen unter Berücksichtigung der Groß- und Kleinschreibung, um Problemen in solchen Fällen vorzubeugen.

Benennen von Anwendungskomponenten

Beim Ermitteln der Identität einer Assembly durch die Common Language Runtime wird der Dateiname nicht berücksichtigt. Die Identität einer Assembly für die Common Language Runtime umfasst Name, Version, Kultur sowie starken Namen und muss eindeutig sein.

Ein Beispiel: Bei einer Assembly mit dem Namen myAssembly.exe, die auf eine Assembly mit dem Namen myAssembly.dll verweist, wird die Bindung korrekt vorgenommen, wenn Sie die Datei myAssembly.exe ausführen. Führt jedoch eine andere Anwendung diese Datei unter Verwendung der AppDomain.ExecuteAssembly-Methode aus, interpretiert dies die Common Language Runtime so, dass myAssembly bereits geladen wurde, wenn myAssembly.exe eine Bindung an myAssembly anfordert. In diesem Fall wird myAssembly.dll niemals geladen. Da myAssembly.exe den angeforderten Typ nicht enthält, tritt eine TypeLoadException auf.

Stellen Sie zur Vermeidung dieses Problems sicher, dass die Assemblys, aus denen Ihre Anwendung besteht, nicht den gleichen vollständigen Namen haben, oder legen Sie Assemblys mit gleichem Namen in verschiedenen Verzeichnissen ab.

Hinweis

Wenn Sie eine Assembly mit starkem Namen im globalen Assemblycache ablegen, müssen der Dateiname der Assembly und der Assemblyname übereinstimmen (ohne Dateinamenerweiterungen wie .exe oder .dll). Lautet der Dateiname einer Assembly z. B. myAssembly.dll, muss die Assembly den Namen myAssembly tragen. Private Assemblys, die nur im Stammverzeichnis der Anwendung bereitgestellt werden, können sich in Assembly- und Dateiname unterscheiden.

Siehe auch

Aufgaben

Gewusst wie: Bestimmen des vollqualifizierten Namens einer Assembly

Konzepte

Erstellen von Assemblys
Assemblys mit starkem Namen
Globaler Assemblycache
So sucht Common Language Runtime nach Assemblys

Weitere Ressourcen

Programmieren mit Assemblys