Condividi tramite


Nomi sicuri per il controllo versioni

Sulla base del codice contenuto nella directory 4_Shared, in questo passaggio viene utilizzato il codice contenuto nella directory 5_Versioned per creare due versioni distinte di un componente condivisibile, utilizzando ulteriori opzioni di configurazione dell'applicazione per dimostrare come sia possibile eseguire l'applicazione. Un metodo nella versione 2.0.1.0 di Reverser.dll è stato volutamente reso non compatibile con lo stesso metodo nella versione 2.0.0.0 in modo che la chiamata a tale metodo da parte di un Client mediante la versione 2.0.0.0 non riesca con la versione successiva.

Per illustrare come è possibile modificare le chiavi di versione da una versione di assembly all'altra, verrà generata una nuova coppia di chiavi, che sarà salvata in un file, utilizzando lo strumento Nome sicuro (Sn.exe):

sn –k orgVerKey.snk

Una volta creata una nuova chiave privata, è possibile compilare entrambi i componenti per la versione 2.0 , specificando il file di chiave e il numero di versione assegnato. Anche in questo caso, è possibile specificare i seguenti attributi (illustrati per la versione 2.0.0.0):

[assembly: System.Reflection.AssemblyVersion("2.0.0.0")]
[assembly: System.Reflection.AssemblyKeyFile("orgVerKey.snk")]

Se si esegue di nuovo Ildasm.exe sui due file Reverser.dll aggiornati, è possibile verificare che gli assembly sono condivisibili, come risulta dalla presenza di una diversa proprietà .publickey (perché è stata utilizzata una coppia di chiavi diversa dalla versione 1.0.0.0) e da una proprietà .ver aggiornata (2.0.0.0 o 2.0.1.0, a seconda della versione che si sta osservando):

.assembly Reverser
{
  .custom instance void 
   ... // orgVerKey.snk
  .publickey = (...}
  .hash algorithm 0x00008004
  .ver 2:0:0:0
}

Vedere anche

Criteri di associazione | Riepilogo della distribuzione di package | Appendice A: ulteriori informazioni sulla creazione di package e sulla distribuzione | Appendice B: strumenti per la creazione di package e per la distribuzione