Gewusst wie: Verweisen auf eine Assembly mit starkem Namen

Aktualisiert: November 2007

Der Vorgang des Verweisens auf Typen oder Ressourcen in einer Assembly mit starkem Namen ist in der Regel transparent. Ein Verweis ist entweder während des Kompilierens (frühe Bindung) oder zur Laufzeit möglich.

Einen Verweis zur Kompilierungszeit nehmen Sie vor, indem Sie dem Compiler mitteilen, dass Ihre Assembly explizit auf eine andere Assembly verweist. Wenn Sie einen solchen Verweis einsetzen, erhält der Compiler automatisch den öffentlichen Schlüssel der Assembly mit starkem Namen, auf die verwiesen wurde, und platziert ihn im Assemblyverweis der gerade kompilierten Assembly.

Hinweis:

Eine Assembly mit starkem Namen kann nur Typen aus anderen Assemblys mit starkem Namen verwenden. Andernfalls ist die Sicherheit der Assembly mit starkem Namen beeinträchtigt.

So verweisen Sie zur Kompilierungszeit auf eine Assembly mit starkem Namen

  • Geben Sie an der Eingabeaufforderung folgenden Befehl ein:

    <Compilerbefehl> /reference:<Assemblyname>

    In diesem Befehl bezeichnet Compilerbefehl den Compilerbefehl in der von Ihnen verwendeten Sprache und Assemblyname den Namen der Assembly mit starkem Namen, auf die verwiesen wird. Sie können auch andere Compileroptionen verwenden, z. B. die Option /t:library, um eine Bibliothekassembly zu erstellen.

Im folgenden Beispiel wird eine Assembly mit dem Namen myAssembly.dll erstellt, die aus einem Codemodul mit dem Namen myAssembly.cs auf eine Assembly mit starkem Namen, myLibAssembly.dll, verweist.

csc /t:library myAssembly.cs /reference:myLibAssembly.dll

So verweisen Sie zur Laufzeit auf eine Assembly mit starkem Namen

  • Wenn Sie beispielsweise mit der Assembly.Load-Methode oder der Assembly.GetType-Methode zur Laufzeit auf eine Assembly mit starkem Namen verweisen, müssen Sie den Anzeigenamen der Assembly mit starkem Namen verwenden, auf die verwiesen wird. Anzeigenamen haben folgende Syntax:

<Assemblyname>, <Versionsnummer>, <Kultur>, <Token für den öffentlichen Schlüssel>

Beispiel:

myDll, Version=1.1.0.0, Culture=en, PublicKeyToken=03689116d3a4ae33 

In diesem Beispiel ist PublicKeyToken die hexadezimale Form des Tokens für den öffentlichen Schlüssel. Ist kein Wert für die Kultur vorhanden, verwenden Sie Culture=neutral.

Der folgende Beispielcode zeigt, wie Sie diese Informationen in der Assembly.Load-Methode verwenden können.

Assembly.Load("myDll,Version=1.0.0.1,Culture=neutral,PublicKeyToken=9b35aa32c18d4fb1")
Assembly.Load("myDll,Version=1.0.0.1,Culture=neutral,PublicKeyToken=9b35aa32c18d4fb1");

Sie können mit dem folgenden Befehl des Strong Name-Tools (Sn.exe) den öffentlichen Schlüssel und das entsprechende Token im Hexadezimalformat drucken:

sn -Tp <Assembly>

Falls Sie über die öffentliche Schlüsseldatei verfügen, können Sie stattdessen folgenden Befehl verwenden (beachten Sie dabei die Kleinschreibung im Unterschied zur oben genannten Option):

sn -tp <assembly>

Siehe auch

Weitere Ressourcen

Erstellen und Verwenden von Assemblys mit starkem Namen