Share via


HOW TO:使用強式名稱簽署組件

更新:2007 年 11 月

Windows Software Development Kit (SDK) 提供以強式名稱 (Strong Name) 簽署組件的幾種方式:

  • 使用 Windows SDK 提供的組件連結器 (Al.exe)

  • 使用組件屬性將強式名稱資訊插入您的程式碼。您可以使用 AssemblyKeyFileAttributeAssemblyKeyNameAttribute,視使用的金鑰檔的所在位置而定。

    注意事項:

    在 .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

若要使用屬性以強式名稱簽署組件

  • 在程式碼模組中,加入 AssemblyKeyFileAttributeAssemblyKeyNameAttribute,指定容器或檔案名稱,其中含有將組件簽署為強式名稱時所使用的金鑰組。

下列程式碼範例會搭配一個稱為 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) 會尋找金鑰檔的相關目前目錄和輸出目錄。使用命令列編譯器時,您可以只要將金鑰複製到含有您的程式模組的目前目錄即可。

請參閱

工作

HOW TO:建立公開/私密金鑰組

概念

延遲簽署組件

參考

專案設計工具、簽署頁

其他資源

建立和使用強式名稱的組件

管理組件和資訊清單簽署