Freigeben über


Gewusst wie: Verweisen auf eine Assembly mit starkem Namen

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.

HinweisHinweis

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 Bibliotheksassembly 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 zur Laufzeit auf eine Assembly mit starkem Namen verweisen (beispielsweise mit der Assembly.Load-Methode oder der Assembly.GetType-Methode), müssen Sie den Anzeigenamen der Assembly mit starkem Namen verwenden, auf die verwiesen wird. Anzeigenamen haben folgende Syntax:

    <Assemblyname>, <Versionsnummer>, <Kultur>, <öffentliches Schlüsseltoken>

    Beispiel:

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

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

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

Dim myDll As Assembly = _
    Assembly.Load("myDll, Version=1.0.0.1, Culture=neutral, PublicKeyToken=9b35aa32c18d4fb1")
Assembly myDll =
    Assembly.Load("myDll, Version=1.0.0.1, Culture=neutral, PublicKeyToken=9b35aa32c18d4fb1");
Assembly^ myDll =
    Assembly::Load("myDll, Version=1.0.0.1, Culture=neutral, PublicKeyToken=9b35aa32c18d4fb1");

Sie können mit dem folgenden Befehl von Strong Name (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

Konzepte

Erstellen und Verwenden von Assemblys mit starkem Namen