Configurazione del server di pubblicazione

Un file di configurazione dell'editore reindirizza a livello globale le applicazioni e gli assembly con una dipendenza da una versione di un assembly side-by-side per usare un'altra versione dello stesso assembly. In questo modo, le applicazioni e gli assembly possono usare l'assembly aggiornato senza dover ricompilare tutte le applicazioni interessate.

I file di configurazione del server di pubblicazione possono essere forniti dal server di pubblicazione di un assembly durante l'emissione di una nuova versione dell'assembly con correzioni di bug compatibili o aggiornamenti della sicurezza. La versione aggiornata deve essere completamente compatibile con le versioni precedenti. Un file di configurazione dell'editore non deve mai essere usato per aggiungere nuove funzionalità, a meno che l'aggiornamento non sia completamente compatibile con le versioni precedenti. I file di configurazione del server di pubblicazione non devono mai essere usati per incrementare la versione principale o secondaria di un assembly. Ad esempio, non reindirizzare assembly versione 6.0.0.0 a 7.0.0.0 o a 6.1.0.0.

I file di configurazione del server di pubblicazione devono essere emessi solo dal server di pubblicazione dell'assembly. Gli sviluppatori di assembly devono firmare assembly condivisi affiancati e file di configurazione dell'editore. Usare la stessa chiave per firmare l'assembly e i file di configurazione del server di pubblicazione associati. I file di configurazione del server di pubblicazione devono essere firmati usando gli stessi strumenti usati per gli assembly, vedere Esempio di firma degli assembly e Creazione di file e cataloghi firmati.

In genere, la nuova versione di un assembly e il file di configurazione dell'editore associato verranno installati in un aggiornamento del Service Pack. I file di configurazione del server di pubblicazione non devono mai essere forniti con le applicazioni come ridistribuibili perché l'installazione di un file di configurazione del server di pubblicazione reindirizza globalmente gli assembly nel sistema. Se l'assembly da aggiornare viene fornito come ridistribuibile, il server di pubblicazione deve fornire entrambe le operazioni seguenti.

  • Pacchetto di Windows Installer (file .msi) che include la nuova versione dell'assembly con la configurazione del server di pubblicazione. Questa operazione può essere installata come Service Pack o QFE perché in questo caso il cliente ha scelto di aggiornare a livello globale il sistema. Questa versione del pacchetto non deve mai essere installata dalle applicazioni.
  • Un modulo di unione di Windows Installer (file con estensione msm) che include solo la nuova versione dell'assembly. Questa versione può essere inclusa nelle applicazioni.

Le applicazioni che richiedono una versione minima dell'assembly devono dichiarare la dipendenza dalla versione minima, se la versione minima non è disponibile in un sistema, l'applicazione non verrà avviata. Se è disponibile come ridistribuibile, deve essere incluso nella configurazione dell'applicazione.

Ad esempio, l'installazione del file di configurazione del server di pubblicazione seguente reindirizza l'associazione dalla versione 2.0.0.0 di Microsoft.Windows.SampleAssembly alla versione 2.0.1.0. Verrà aggiunto un nuovo criterio denominato 1.1.0.0.Policy in %systemDrive%\windows\winsxs\policies\x86_policy.2.0.Microsoft.Windows.SampleAssembly_75e377300ab7b886_x-ww_<hashvalue>.

<?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>

L'installazione del file di configurazione del server di pubblicazione seguente per lo stesso assembly reindirizza l'associazione dalla versione 2.0.0.0 di Microsoft.Windows.SampleAssembly alla versione 2.0.3.0. Verrà aggiunto un altro criterio denominato 2.1.0.0.Policy in %systemDrive%\windows\winsxs\policies\x86_policy.2.0.Microsoft.Windows.SampleAssembly_75e377300ab7b886_x-ww_<hashvalue>.

<?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>