管理組件和資訊清單簽署

強式名稱簽署提供軟體元件的全域唯一識別。 強式名稱用以保證組件無法為他人作為詐騙之用,並確定元件的相依性和組態陳述式會對應到正確的元件和元件版本。

強式名稱是由組件的身分識別 (簡單文字名稱、版本號碼及文化特性資訊),加上公開金鑰語彙基元和數位簽章所組成。

如需在 Visual Basic 和 C# 專案中簽署組件的資訊,請參閱建立和使用強式名稱的組件

如需在 C++ 專案中簽署組件的資訊,請參閱強式名稱組件 (C++/CLI)

注意

強式名稱簽章無法保護組件免受反向工程的威脅。 若要防止反向工程,請參閱 Dotfuscator Community

資產類型和簽署

您可以簽署 .NET 組件和應用程式資訊清單:

  • 可執行檔 (.exe)

  • 應用程式資訊清單 (.exe.manifest)

  • 部署資訊清單 (.application)

  • 共用的元件組件 (.dll)

簽署下列資產類型:

  1. 組件,如果您想要將它們部署到全域組件快取 (GAC)。

  2. ClickOnce 署應用程式和部署資訊清單。 Visual Studio 根據預設可簽署這些應用程式。

  3. 主要 Interop 組件,用於 COM 互通性。 從 COM 類型程式庫建立主要 Interop 組件時,TLBIMP 公用程式會強制執行強式命名。

一般來說,您不應該簽署可執行檔。 強式名稱元件無法參考與應用程式一起部署的非強式名稱元件。 Visual Studio 不簽署應用程式可執行檔,而是改為簽署應用程式資訊清單,指向弱式命名的可執行檔。 避免簽署應用程式的私用元件,因為簽署會使得相依性更難以管理。

如何簽署 Visual Studio 中的組件

簽署組件的程序取決於您專案所使用的「專案設計工具」版本。

若為 Visual Studio 2022 中的 .NET Core (與 .NET 5 以上版本) C# 專案:

  1. 請開啟專案屬性視窗 (以滑鼠右鍵按一下方案總管中的專案節點,然後選取屬性)。
  2. 組建下,尋找強式命名,然後選取簽署組件核取方塊。 當您核取此方塊時,畫面上會顯示金鑰檔案和延遲簽署的其他選項。
  3. 指定金鑰檔。 如果您選擇建立新的金鑰檔,新的金鑰檔一律會使用 .pfx 格式建立。 您需要新檔案的名稱和密碼。

若為 Visual Studio 2022 或 Visual Studio 2019 中的 .NET Framework 和 Visual Basic 專案:

  1. 請開啟專案屬性視窗的簽署索引標籤 (以滑鼠右鍵按一下方案總管中的專案節點,然後選取屬性)。 選取 [簽署] 索引標籤。
  2. 選取 [簽署組件] 核取方塊。
  3. 指定金鑰檔。 如果您選擇建立新的金鑰檔,新的金鑰檔一律會使用 .pfx 格式建立。 您需要新檔案的名稱和密碼。

警告

您應該一律以密碼保護金鑰檔,以防止他人使用您的金鑰檔。 您也可以使用提供者或憑證存放區來保護您的金鑰。

您也可以指向已經建立的金錀。 如需建立金鑰的詳細資訊,請參閱如何:建立公開/私密金鑰組

如果您只能存取公開金鑰,您可以使用延遲簽署,稍後再指派金鑰。 選取 [僅延遲簽署] 核取方塊以啟用延遲簽署。 延遲簽署的專案不會執行,且無法進行偵錯。 不過,您可以搭配使用 Sn.exe 強式名稱工具-Vr 選項,在開發期間略過驗證。

如需簽署資訊清單的資訊,請參閱如何:簽署應用程式和部署資訊清單