強式名稱版本控制
在 4_Shared 目錄的程式碼上建置時,是使用 5_Versioned 目錄的程式碼來分別建立二個版本的可共用元件,並且使用其他應用程式組態選項來示範如何讓應用程式執行。我們故意讓 2.0.1.0 版 Reverser.dll 中的方法,不相容於 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")]
如果您在更新後的 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
}