Freigeben über


Vorgehensweise: Erstellen einer Herausgeberrichtlinie

Hinweis

Dieser Artikel gilt für das .NET Framework. Er gilt nicht für neuere Implementierungen von .NET, einschließlich .NET 6 und höherer Versionen.

Anbieter von Assemblys können angeben, dass Anwendungen eine neuere Version einer Assembly verwenden sollten, indem sie der upgegradeten Assembly eine Herausgeberrichtliniendatei hinzufügen. Die Herausgeberrichtliniendatei gibt die Assemblyumleitung und die Codebasiseinstellungen an und verwendet dasselbe Format wie eine Anwendungskonfigurationsdatei. Die Herausgeberrichtliniendatei wird in eine Assembly kompiliert und im globalen Assemblycache platziert.

Es gibt drei Schritte zum Erstellen einer Herausgeberrichtlinie:

  1. Erstellen Sie eine Herausgeberrichtliniendatei.

  2. Erstellen Sie eine Herausgeberrichtlinienassembly.

  3. Fügen Sie die Herausgeberrichtlinienassembly zum globalen Assemblycache hinzu.

Das Schema für die Herausgeberrichtlinie wird in Umleiten von Assemblyversionen beschrieben. Das folgende Beispiel zeigt eine Herausgeberrichtliniendatei, die eine Version von myAssembly an eine andere umleitet.

<configuration>
   <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
       <dependentAssembly>
         <assemblyIdentity name="myAssembly"
                           publicKeyToken="32ab4ba45e0a69a1"
                           culture="en-us" />
         <!-- Redirecting to version 2.0.0.0 of the assembly. -->
         <bindingRedirect oldVersion="1.0.0.0"
                          newVersion="2.0.0.0"/>
       </dependentAssembly>
      </assemblyBinding>
   </runtime>
</configuration>

Informationen zum Angeben einer Codebasis finden Sie unter Festlegen des Speicherortes einer Assembly.

Erstellen der Herausgeberrichtlinienassembly

Verwenden Sie den Assemblylinker (Al.exe), um die Herausgeberrichtlinienassembly zu erstellen.

Erstellen einer Herausgeberrichtlinienassembly

Geben Sie den folgenden Befehl an der Eingabeaufforderung ein:

al /link:publisherPolicyFile /out:publisherPolicyAssemblyFile /keyfile:keyPairFile /platform:processorArchitecture

In diesem Befehl:

  • Das Argument publisherPolicyFile ist der Name der Herausgeberrichtliniendatei.

  • Das Argument publisherPolicyAssemblyFile ist der Name der Herausgeberrichtlinienassembly, die sich aus diesem Befehl ergibt. Der Name der Assemblydatei muss diesem Format entsprechen:

    `policy.majorNumber.minorNumber.mainAssemblyName.dll'

  • Das Argument keyPairFile ist der Name der Datei, die das Schlüsselpaar enthält. Sie müssen die Assembly und Herausgeberrichtlinienassembly mit demselben Schlüsselpaar signieren.

  • Das Argument processorArchitecture identifiziert die Plattform, die von einer prozessorspezifischen Assembly bestimmt wird.

    Hinweis

    Die Möglichkeit, eine bestimmte Prozessorarchitektur als Ziel zu verwenden, ist ab .NET Framework 2.0 verfügbar.

Die Möglichkeit, eine bestimmte Prozessorarchitektur als Ziel zu verwenden, ist ab .NET Framework 2.0 verfügbar. Der folgende Befehl erstellt eine Herausgeberrichtlinienassembly namens policy.1.0.myAssembly aus einer Herausgeberrichtliniendatei namens pub.config, weist der Assembly mithilfe des Schlüsselpaars in der sgKey.snk-Datei einen starken Namen zu und gibt an, dass die Assembly auf die x86-Prozessorarchitektur ausgerichtet ist.

al /link:pub.config /out:policy.1.0.myAssembly.dll /keyfile:sgKey.snk /platform:x86

Die Herausgeberrichtlinienassembly muss mit der Prozessorarchitektur der Assembly übereinstimmen, auf die sie angewendet wird. Wenn Ihre Assembly also einen ProcessorArchitecture-Wert von MSIL hat, muss die Herausgeberrichtlinienassembly für diese Assembly mit /platform:anycpu erstellt werden. Sie müssen für jede prozessorspezifische Assembly eine separate Herausgeberrichtlinienassembly bereitstellen.

Eine Folge dieser Regel ist, dass Sie zum Ändern der Prozessorarchitektur für eine Assembly die Haupt- oder Nebenkomponente der Versionsnummer ändern müssen, damit Sie eine neue Herausgeberrichtlinienassembly mit der richtigen Prozessorarchitektur bereitstellen können. Die alte Herausgeberrichtlinienassembly kann Ihre Assembly nicht mehr verwenden, sobald die Assembly über eine andere Prozessorarchitektur verfügt.

Eine weitere Folge ist, dass der Linker der Version 2.0 nicht verwendet werden kann, um eine Herausgeberrichtlinienassembly für eine Assembly zu erstellen, die mit früheren Versionen von .NET Framework kompiliert wurde, da sie immer die Prozessorarchitektur angibt.

Hinzufügen der Herausgeberrichtlinienassembly zum globalen Assemblycache

Verwenden Sie das Tool für den globalen Assemblycache (Gacutil.exe), um die Herausgeberrichtlinienassembly zum globalen Assemblycache hinzuzufügen.

So fügen Sie die Herausgeberrichtlinienassembly zum globalen Assemblycache hinzu

Geben Sie den folgenden Befehl an der Eingabeaufforderung ein:

gacutil /i publisherPolicyAssemblyFile

Der folgende Befehl fügt policy.1.0.myAssembly.dll zum globalen Assemblycache hinzu.

gacutil /i policy.1.0.myAssembly.dll

Wichtig

Die Herausgeberrichtlinienassembly kann dem globalen Assemblycache nicht hinzugefügt werden, es sei denn, die ursprüngliche Herausgeberrichtliniendatei, die im Argument /link angegeben ist, befindet sich im selben Verzeichnis wie die Assembly.

Siehe auch