元件的強式命名會為元件建立唯一的身分識別,而且可以防止元件衝突。
什麼使一個元件成為強名稱?
強名稱元件是使用與元件一起散發的公鑰,以及元件本身對應的私鑰來產生。 元件包含元件指令清單,其中包含組成元件之所有檔案的名稱和哈希。 具有相同強名稱的元件應該相同。
您可以使用 Visual Studio 或命令行工具來強名稱元件。 如需詳細資訊,請參閱如何:使用強名稱簽署組件或Sn.exe(強名稱工具)。
建立強名稱元件時,它會包含元件的簡單文字名稱、版本號碼、選擇性文化特性資訊、數字簽名,以及對應至用於簽署之私鑰的公鑰。
警告
請勿依賴強名稱的安全性。 它們僅提供唯一的身分識別。
為什麼要對您的組件使用強式命名?
針對 .NET Framework,強名稱元件在下列案例中很有用:
您想要讓您的元件能夠被強名稱元件參考,或想要允許其他強名稱元件存取您的元件。
應用程式需要存取相同元件的不同版本。 這表示您需要不同版本的元件,才能在相同的應用程式網域中同時載入,而不會發生衝突。 例如,如果 API 的不同延伸模組存在於具有相同簡單名稱的元件中,則強命名會為每個元件的版本提供唯一的身分識別。
您不想對使用您組件的應用程式效能造成負面影響,因此您希望該組件為領域中立。 這需要強式命名,因為領域中性組件必須安裝在全域組件快取中。
您想要套用發行者原則來集中處理應用程式的服務,這表示元件必須安裝在全域程式集緩存中。
針對 .NET Core 和 .NET 5+,強式名稱組件不提供實質優點。 執行時間不會驗證強名稱簽章,也不會使用強名稱進行元件綁定。
如果您是開放原始碼開發人員,並且希望藉由有強名稱的組件來獲得身分識別的優勢,以提高與 .NET Framework 的相容性,請考慮將與組件相關聯的私鑰提交到您的原始程式碼控制系統。