CA2210:組件應包含有效的強式名稱
型別名稱 |
AssembliesShouldHaveValidStrongNames |
CheckId |
CA2210 |
分類 |
Microsoft.Design |
中斷變更 |
不中斷 |
原因
未使用強式名稱簽署的組件、無法驗證強式名稱,或者不具有電腦上目前登錄設定的強式名稱便為無效。
規則描述
這項規則會擷取及驗證組件的強式名稱。 如果符合下列任一項,則會發生違規:
組件沒有強式名稱。
簽署之後改變了組件。
組件是延遲簽署。
不正確地簽署組件,或簽署失敗。
組件需要登錄設定才能傳遞驗證。 例如,強式名稱工具 (Sn.exe) 會用於略過組件的驗證工作。
強式名稱可避免用戶端在不知情的狀況下,載入已遭他人修改的組件。 除了極少數的案例以外,您都應該避免部署沒有強式名稱的組件。 如果您共用或散發未正確簽署的組件,表示這個組件或許已遭他人修改,Common Language Runtime 可能不會載入組件,或是使用者可能必須停用電腦上的驗證作業。 沒有強式名稱的組件具有下列缺點:
無法驗證該組件的來源。
如果組件的內容已變更,Common Language Runtime 無法對使用者發出警告。
無法載入這個組件至全域組件快取。
請注意,若要載入並分析延遲簽署的組件,您必須停用組件的驗證作業。
如何修正違規
若要建立金鑰檔
請使用下列其中一種程序:
使用 .NET Framework SDK 提供的組件連結器工具 (Al.exe)。
若是 .NET Framework v1.0 或 v1.1,請使用 System.Reflection.AssemblyKeyFileAttribute 或 System.Reflection.AssemblyKeyNameAttribute 屬性。
若是 .NET Framework 2.0,請使用 /keyfile 或 /keycontainer 編譯器 (Compiler) 選項 (在 C++ 中則是 /KEYFILE (指定金鑰或金鑰組以簽署組件) 或 /KEYCONTAINER (指定金鑰容器以簽署組件) 連結器 (Linker) 選項)。
若要在 Visual Studio 中以強式名稱簽署組件
在 Visual Studio 中開啟方案。
在 [方案總管] 中,以滑鼠右鍵按一下專案,然後按一下 [屬性]。
按一下 [簽署] 索引標籤,然後選取 [簽署組件] 核取方塊。
從 [選擇強式名稱金鑰檔],選取 [新增]。
[建立強式名稱金鑰] 視窗隨即顯示。
在 [金鑰檔名稱] 中,輸入強式名稱金鑰的名稱。
選擇是否要以密碼保護金鑰,然後按一下 [確定]。
在 [方案總管] 中,以滑鼠右鍵按一下專案,然後按一下 [建置]。
若要在 Visual Studio 外以強式名稱簽署組件
- 使用 .NET Framework SDK 所提供的強式名稱工具 (Sn.exe)。 如需詳細資訊,請參閱Sn.exe (強式名稱工具)。
隱藏警告的時機
只有在不必擔心內容是否會遭他人竄改的環境中使用這個組件時,您才可以放心地隱藏這項規則的警告。