HOW TO:建立公開/私密金鑰組
更新:2007 年 11 月
若要使用強式名稱簽署組件,您必須擁有公開/私密金鑰組。這個公用和私密密碼編譯金鑰組將在編譯期間用來建立強式名稱的組件。您可以使用強式名稱工具 (Sn.exe) 來建立金鑰組。金鑰組檔案通常會具有 .snk 副檔名。
注意事項: |
---|
在 Visual Studio 2005 中,C#、Visual Basic 和 Visual J# 整合式開發環境 (IDE) 可讓您產生金鑰組 (Key Pairs) 並簽署組件,而不需要使用 Sn.exe 建立金鑰組。這些 IDE 在 [專案設計工具] 內具有 [簽署] 索引標籤。Visual C++ IDE 可讓您從 [屬性頁] 視窗的 [組態屬性] 區段 上,於 [連結器] 區段的 [進階] 屬性頁上指定現有金鑰檔的位置。使用 AssemblyKeyFileAttribute 來識別金鑰組的檔案在 Visual Studio 2005 內已經過時淘汰。 |
若要建立金鑰組
請在命令提示字元中輸入下列命令:
sn –k <file name>
在這個命令中,file name 是指含有金鑰組的輸出檔名。
下列範例建立名為 sgKey.snk 的金鑰組。
sn -k sgKey.snk
如果您想要延遲簽署組件,而且您控制了整個金鑰組 (這大致是發生在測試案例中的情形),您可以使用下列命令來產生金鑰組,然後從金鑰組解壓縮公開金鑰到個別的檔案中。首先,請先建立金鑰組:
sn -k keypair.snk
- 接下來,從金鑰組解壓縮公開金鑰,並將公開金鑰複製到個別的檔案中:
sn -p keypair.snk public.snk
- 建立金鑰組後,您必須將檔案放到可使用強式名稱簽署工具尋找到的位置。
使用強式名稱簽署組件時,組件連結器 (Al.exe) 會尋找金鑰檔的相關目前目錄和輸出目錄。使用命令列編譯器時,只要將金鑰複製到含有您的程式模組的目前目錄即可。
如果您正在使用舊版的 Visual Studio,而該版本在專案屬性 (Property) 內沒有 [簽署] 索引標籤,則建議的金鑰檔位置為專案目錄,並指定如下所示的檔案屬性 (Attribute):
<Assembly: AssemblyKeyFileAttribute("..\..\key.snk")>
[assembly: AssemblyKeyFileAttribute(@"..\..\key.snk")]