HOW TO:使用強式名稱簽署組件
更新:2007 年 11 月
Windows Software Development Kit (SDK) 提供以強式名稱 (Strong Name) 簽署組件的幾種方式:
使用 Windows SDK 提供的組件連結器 (Al.exe)。
使用組件屬性將強式名稱資訊插入您的程式碼。您可以使用 AssemblyKeyFileAttribute 或 AssemblyKeyNameAttribute,視使用的金鑰檔的所在位置而定。
注意事項: 在 .NET Framework 2.0 版中使用屬性 (Attribute) 時,會出現某些編譯器問題的警告訊息。
使用編譯器選項,例如 C# 和 Visual Basic 內的 /keyfile 或 /delaysign,或是 C++ 內的 /KEYFILE 或 /DELAYSIGN 連結器選項 (如需延遲簽署的詳細資訊,請參閱延遲簽署組件)。
注意事項: |
---|
在 Visual Studio 2005 中,開發環境會提供用來簽署組件的工具。請參閱管理組件和資訊清單簽署和專案設計工具、簽署頁。 |
您必須使用密碼編譯金鑰組將組件簽署為強式名稱。如需建立金鑰組 (Key Pair) 的詳細資訊,請參閱 HOW TO:建立公用/私密金鑰組。
若要使用組件連結器建立組件以強式名稱來簽署組件
請在命令提示字元中輸入下列命令:
al/out:<assembly name> <module name>/keyfile:<file name>
在這個命令中,assembly name 是用來簽署為強式名稱的組件名稱、module name 是用來建立組件的程式碼模組名稱,而 file name 是含有金鑰組的容器或檔案名稱。
下列範例使用 sgKey.snk 金鑰檔將組件 MyAssembly.dll 簽署為強式名稱。
al /out:MyAssembly.dll MyModule.netmodule /keyfile:sgKey.snk
若要使用屬性以強式名稱簽署組件
- 在程式碼模組中,加入 AssemblyKeyFileAttribute 或 AssemblyKeyNameAttribute,指定容器或檔案名稱,其中含有將組件簽署為強式名稱時所使用的金鑰組。
下列程式碼範例會搭配一個稱為 sgKey.snk 的金鑰檔來使用 AssemblyKeyFileAttribute,這個金鑰檔位於用來編譯組件的目錄中。這是假設組件是使用命令列編譯器 vbc.exe 和 csc.exe 進行編譯。
<Assembly:AssemblyKeyFileAttribute("sgKey.snk")>
[assembly:AssemblyKeyFileAttribute(@"sgKey.snk")]
注意事項: |
---|
在像 Visual Studio 這樣的開發環境中,組件可能不是在專案目錄中進行編譯。例如,某些 Visual Studio 版本會在 bin\Debug 子目錄中編輯 C# 專案。在這種情況下,程式碼範例中的路徑就會是 "..\\..\\sgKey.snk"。在 Visual Studio 2005 中,您可以在專案設定中指定 C# 的金鑰檔。 |
您也可以在編譯時延遲簽署組件。如需詳細資訊,請參閱延遲簽署組件。
使用強式名稱簽署組件時,組件連結器 (Al.exe) 會尋找金鑰檔的相關目前目錄和輸出目錄。使用命令列編譯器時,您可以只要將金鑰複製到含有您的程式模組的目前目錄即可。