Verlegerkonfiguration

Eine Herausgeberkonfigurationsdatei leitet Anwendungen und Assemblys, die von einer Version einer parallelen Assembly abhängig sind, global um, um eine andere Version derselben Assembly zu verwenden. Dadurch können Anwendungen und Assemblys die aktualisierte Assembly verwenden, ohne alle betroffenen Anwendungen neu erstellen zu müssen.

Verlegerkonfigurationsdateien können vom Herausgeber einer Assembly bereitgestellt werden, wenn eine neue Version der Assembly mit kompatiblen Fehlerbehebungen oder Sicherheitsupdates ausgegeben wird. Die aktualisierte Version sollte vollständig abwärtskompatibel sein. Eine Herausgeberkonfigurationsdatei sollte nie zum Hinzufügen neuer Features verwendet werden, es sei denn, das Update ist vollständig abwärtskompatibel. Verlegerkonfigurationsdateien sollten niemals verwendet werden, um die Haupt- oder Nebenversion einer Assembly zu erhöhen. Leiten Sie beispielsweise Assemblyversion 6.0.0.0 nicht auf 7.0.0.0 oder 6.1.0.0 um.

Herausgeberkonfigurationsdateien sollten nur vom Herausgeber der Assembly ausgegeben werden. Assemblyentwickler sollten gemeinsam genutzte Assemblys und Herausgeberkonfigurationsdateien signieren. Verwenden Sie denselben Schlüssel, um die Assembly und die zugehörigen Herausgeberkonfigurationsdateien zu signieren. Verlegerkonfigurationsdateien sollten mit denselben Tools signiert werden, die auch für Assemblys verwendet werden. Siehe Beispiel für die Assemblysignatur und Erstellen signierter Dateien und Kataloge.

In der Regel werden die neue Version einer Assembly und die zugehörige Herausgeberkonfigurationsdatei in einem Service Pack-Update installiert. Verlegerkonfigurationsdateien sollten niemals mit Anwendungen als Verteiler bereitgestellt werden, da die globale Installation einer Herausgeberkonfigurationsdatei Assemblys auf dem System umleitet. Wenn die assembly, die aktualisiert wird, als Verteiler bereitgestellt wird, sollte der Herausgeber beides bereitstellen.

  • Ein Windows Installer-Paket (.msi Datei), das die neue Version der Assembly mit Herausgeberkonfiguration enthält. Dies kann als Service Pack oder QFE installiert werden, da der Kunde in diesem Fall entschieden hat, das System global zu aktualisieren. Diese Version des Pakets sollte niemals von Anwendungen installiert werden.
  • Ein Windows Installer-Mergemodul (MSM-Datei), das nur die neue Version der Assembly enthält. Diese Version kann in Anwendungen enthalten sein.

Anwendungen, die eine Mindestversion der Assembly benötigen, sollten ihre Abhängigkeit von der Mindestversion angeben. Wenn die Mindestversion auf einem System nicht verfügbar ist, kann die Anwendung nicht gestartet werden. Wenn es als Verteiler verfügbar ist, sollte es in das Anwendungssetup einbezogen werden.

Durch die Installation der folgenden Herausgeberkonfigurationsdatei wird beispielsweise die Bindung von Version 2.0.0.0 von Microsoft.Windows.SampleAssembly auf Version 2.0.1.0 umgeleitet. Dadurch wird eine neue Richtlinie namens 1.1.0.0.Policy unter %systemDrive%\windows\winsxs\policies\x86_policy.2.0.Microsoft.Windows.SampleAssembly_75e377300ab7b886_x-ww_<hashvalue> hinzugefügt.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
   <assemblyIdentity type="win32-policy" publicKeyToken="0000000000000000" name="policy.2.0.Microsoft.Windows.SampleAssembly" version="1.1.0.0" processorArchitecture="x86"/>
   <dependency>
      <dependentAssembly>
         <assemblyIdentity type="win32" name="Microsoft.Windows.SampleAssembly"  processorArchitecture="x86" publicKeyToken="75e377300ab7b886"/>
         <bindingRedirect oldVersion="2.0.0.0" newVersion="2.0.1.0"/>
      </dependentAssembly>
   </dependency>
</assembly>

Das Installieren der folgenden Herausgeberkonfigurationsdatei für dieselbe Assembly leitet die Bindung von Version 2.0.0.0 von Microsoft.Windows.SampleAssembly auf Version 2.0.3.0 um. Dadurch wird eine weitere Richtlinie namens 2.1.0.0.Policy unter %systemDrive%\windows\winsxs\policies\x86_policy.2.0.Microsoft.Windows.SampleAssembly_75e377300ab7b886_x-ww_<hashvalue> hinzugefügt.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
   <assemblyIdentity type="win32-policy" publicKeyToken="0000000000000000" name="policy.2.0.Microsoft.Windows.SampleAssembly" version="2.1.0.0" processorArchitecture="x86"/>
   <dependency>
      <dependentAssembly>
         <assemblyIdentity type="win32" name="Microsoft.Windows.SampleAssembly"  processorArchitecture="x86" publicKeyToken="75e377300ab7b886"/>
         <bindingRedirect oldVersion="2.0.0.0" newVersion="2.0.3.0"/>
      </dependentAssembly>
   </dependency>
</assembly>