Share via


Partielle Assemblyverweise

Ein vollständiger Assemblyverweis enthält den Textnamen der Assembly, die Version, die Kultur und das Token des öffentlichen Schlüssels (sofern die Assembly einen starken Namen aufweist). Ein vollständiger Assemblyverweis ist bei einem Verweis auf Assemblys erforderlich, die Teil der Common Language Runtime sind, bzw. auf Assemblys im globalen Assemblycache. Sie können auch dynamisch auf eine Assembly verweisen, indem Sie nur partielle Informationen angeben, so z. B. nur den Assemblynamen. Wenn Sie einen partiellen Assemblyverweis angeben, sucht die Common Language Runtime lediglich im Anwendungsverzeichnis nach der jeweiligen Assembly.

Sie haben mehrere Möglichkeiten, um partielle Verweise auf eine Assembly im Code auszuführen:

  • Verwenden Sie eine Methode wie System.Reflection.Assembly.Load, und legen Sie nur einen partiellen Verweis fest. Die Common Language Runtime überprüft das Anwendungsverzeichnis auf die Assembly.

  • Verwenden Sie die System.Reflection.Assembly.LoadWithPartialName-Methode, und legen Sie nur einen partiellen Verweis fest. Die Common Language Runtime überprüft das Anwendungsverzeichnis und den globalen Assemblycache auf die Assembly.

Hinweis

Die LoadWithPartialName-Methode ist in .NET Framework, Version 2.0, veraltet.

Mit der LoadWithPartialName-Methode können Sie in den Bindungsprozess Variabilität einbringen. Wenn Sie beispielsweise eine Bindungsanforderung für eine Assembly mit einem starken Namen stellen, jedoch im Verweis keinen öffentlichen Schlüssel bereitstellen, können Sie nicht sicher sein, ob die Assembly, an die Sie sich binden, vom erwarteten Herausgeber stammt. Darüber hinaus unterliegen Verweise, die kein Token des öffentlichen Schlüssels enthalten, keinen Versionsrichtlinien. Dies führt dazu, dass die Anwendungs- und Computerkonfigurationsdateien nie überprüft werden. Partielle Verweise, die die LoadWithPartialName-Methode verwenden, funktionieren am besten in Szenarien, in denen Sie die aktuelle Version einer Assembly übernehmen möchten.

Partielle Verweise mit der LoadWithPartialName-Methode

Hinweis

Die LoadWithPartialName-Methode ist in .NET Framework, Version 2.0, veraltet.

Ein Aufruf der LoadWithPartialName-Methode muss mindestens den Textnamen der Assembly enthalten, er kann aber auch das Token des öffentlichen Schlüssels, die Version oder die Kultur der Assembly enthalten. Da Sie mit einer Methode arbeiten, die nur einen partiellen Verweis erwartet, ist es nicht erforderlich, die vollständigen Verweisinformationen (Name, Version, Kultur und ggf. Token des öffentlichen Schlüssels) anzugeben.

Wenn Sie partiell auf eine Assembly mit der LoadWithPartialName-Methode verweisen, verwendet die Common Language Runtime spezielle Regeln zum Auffinden der verwiesenen Assembly. Hierzu gehören die folgenden Regeln:

  1. Die Common Language Runtime überprüft die Anwendungskonfigurationsdatei auf kennzeichnende Informationen für den Verweis im <qualifyAssembly>-Element. Bei Auffinden eines gültigen Eintrags erfolgt die Bindung wie für einen vollständigen Verweis.

  2. Die Common Language Runtime überprüft dann das Anwendungsverzeichnis auf eine Assembly, die mit dem Textnamen der angegebenen Assembly übereinstimmt. Wird eine Übereinstimmung gefunden, verwendet die Common Language Runtime diese Assembly.

  3. Wird im Anwendungsverzeichnis keine Übereinstimmung gefunden, überprüft die Common Language Runtime den globalen Assemblycache auf die Assembly. Werden im partiellen Verweis Angaben zum Token des öffentlichen Schlüssels, zur Version oder Kultur gemacht, versucht die Common Language Runtime, eine genaue Übereinstimmung dieses Werts zu finden. Wird keine Version angegeben, versucht die Common Language Runtime die Assembly mit der höchsten Versionsnummer zu finden, die mit den anderen angegebenen Kriterien übereinstimmt. Werden die Kultur oder das Token des öffentlichen Schlüssels nicht angegeben, ist das Verhalten der Common Language Runtime nicht definiert.

    Angenommen, der Assembly.LoadWithPartialName("math, Version 5.0.0.0")-Aufruf wird ausgeführt und der Inhalt des globalen Assemblycache lautet folgendermaßen:

    math,version=5.0.0.0,publicKeyToken=11111111,culture=de
    math,version=5.0.0.0,publicKeyToken=22222222,culture=en
    

    Das Ergebnis des Aufrufs ist nicht definiert. Die Common Language Runtime wählt die erste Assembly aus, auf die sie stößt.

    Als weiteres Beispiel wird angenommen, der Assembly.LoadWithPartialName("math")-Aufruf wird ausgeführt und der Inhalt des globalen Assemblycache lautet folgendermaßen:

    math,version=5.0.0.0,publicKeyToken=11111111,culture=neutral
    math,version=6.0.0.0,publicKeyToken=22222222,culture=neutral
    

    Das Ergebnis des Aufrufs ist eine Bindung an die math-Assembly 6.0.0.0.

    Als letztes Beispiel wird angenommen, ein Assembly.LoadWithPartialName("math,publicKeyToken=11111111")-Aufruf wird ausgeführt und der Inhalt des globalen Assemblycache lautet folgendermaßen:

    math,version=5.0.0.0,publicKeyToken=11111111,culture=neutral
    math,version=6.0.0.0,publicKeyToken=22222222,culture=neutral
    

    Das Ergebnis des Aufrufs ist eine Bindung an die math-Assembly 5.0.0.0.

Partielle Verweise mit kennzeichnenden Informationen

Dynamisch können Sie mit einer Methode wie der System.Reflection.Assembly.Load-Methode verweisen und nur einen partiellen Verweis angeben. Dann können Sie den Verweis mit dem <qualifyAssembly>-Element in der Anwendungskonfigurationsdatei kennzeichnen. Mit diesem Element können Sie die vollständigen Verweisinformationen (Name, Version, Kultur und ggf. das Token des öffentlichen Schlüssels) in der Anwendungskonfigurationsdatei anstelle im Code bereitstellen.

Hinweis

Diesen Typ des partiellen Verweises sollten Sie nicht bei Assemblys verwenden, die für mehrere Anwendungen freigegeben sind. Da Konfigurationseinstellungen nach Anwendung und nicht nach Assembly erfolgen, müssten bei einer freigegebenen Assembly mit diesem Typ des partiellen Verweises jede Anwendung, die diese freigegebene Assembly verwendet, in der Konfigurationsdatei die kennzeichnenden Informationen enthalten sein.

Siehe auch

Konzepte

So sucht Common Language Runtime nach Assemblys
Bereitstellungsszenarien für .NET Framework-Anwendungen
Schritt 1: Untersuchen der Konfigurationsdateien
Schritt 2: Suchen nach Assemblys, auf die zuvor verwiesen wurde
Schritt 3: Durchsuchen des globalen Assemblycaches
Schritt 4: Suchen der Assembly mit CodeBases oder durch Sondierung