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:
Erstellen Sie eine Herausgeberrichtliniendatei.
Erstellen Sie eine Herausgeberrichtlinienassembly.
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.