厳密な名前のバージョン管理

4_Shared ディレクトリのコードのビルドについて、この手順では 5_Versioned ディレクトリのコードを使用して、2 つの別々のバージョンの共有可能コンポーネントを作成し、追加のアプリケーション構成オプションを使用して、アプリケーションをどのように実行させるかを示します。Reverser.dll のバージョン 2.0.1.0 のメソッドは、意図的にバージョン 2.0.0.0 の同じメソッドと互換性を持たないように変更されているため、バージョン 2.0.0.0 を使用してそのメソッドを正常に呼び出したクライアントは、以降のリビジョンではメソッドを呼び出せなくなります。

バージョン キーをアセンブリのあるバージョンから別のバージョンに変更する方法を確認するために、厳密名ツール (Sn.exe) を使用して新しいキー ペアを生成し、生成したキー ペアをファイルに格納します。

sn –k orgVerKey.snk

新しい秘密キーを生成したら、キー ファイルと割り当てるバージョン番号を指定して、いつでもバージョン 2.0 の両コンポーネントをコンパイルできます。ここでも、次のように属性を指定して、バージョン 2.0.0.0 の場合を示します。

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

更新した 2 つの Reverser.dll ファイルに対して Ildasm.exe を再び実行すると、別の .publickey プロパティが存在すること (バージョン 1.0.0.0 とは別のキー ペアを使用したため) と .ver プロパティが更新されていること (どちらを参照しているかにより 2.0.0.0 または 2.0.1.0) から、アセンブリが共有可能になっていることを確認できます。

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

参照

ポリシーのバインディング | パッケージ化と配置の要約 | 付録 A: パッケージ化および配置の追加情報 | 付録 B: パッケージ化および配置用のツール