簡體   English   中英

公共標志做什么?

[英]What does publicsign do?

C#編譯器的-publicsign選項有什么作用?

我已經閱讀了文檔,但仍然不理解https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/compiler-options/publicsign-compiler-option

此選項使編譯器應用公鑰,但實際上並未對程序集進行簽名

什么公鑰? 申請方法如何?

在某些情況下,您可能需要對程序集進行強命名 - 有關強命名以及為什么需要它的更多信息

但是,強命名您的程序集可能會給您的開發過程帶來一些不便 要強命名程序集,您需要在構建期間可以訪問公鑰和私鑰。

諸如StrongNamer之類的工具對您的第三方無符號依賴關系有很大幫助。 幫助解決強命名的病毒性。

在某些情況下,您只希望組織中的少數幾個人(企業,並且在OSS中不太可能,但仍然可以)有權訪問私鑰,以驗證程序集的身份

在您不想公開共享私鑰(即在GitHub OS中)或與整個開發團隊(企業環境)共享,但又不想在公開簽名之前引入開發流程的情況下(引入在VS 2015 Update 2編譯器中),您只有一個選項- 延遲對程序集進行簽名

延遲簽名的程序集在您重視私鑰(最終是程序集身份)的情況下仍會在開發過程中帶來一些摩擦。 需要構建和運行此程序的每個人都必須注冊該程序集,以便在運行時跳過程序集驗證(使用具有管理員權限的“ sn –Vr myAssembly.dll”命令)。

進入公共簽名方法。 它似乎是延遲簽名方法的替代方法。 因此,對程序集進行公開簽名與對程序集進行延遲簽名相同,但是您的開發團隊無需在其計算機上執行“ sn –Vr myAssembly.dll”命令。 但是,它具有一些限制:

在.NET Framework上調試和測試公共簽名程序集時的已知問題:

  • 您將無法將程序集安裝到全局程序集緩存(GAC)
  • 您將無法在打開了陰影復制的AppDomain中加載程序集
  • 您將無法在部分受信任的AppDomain中加載程序集

*關於程序集身份的說明 :強命名是為了程序集身份而不是安全性。 強名(全簽名)程序集將經受驗證檢查(即“ sn -vf myAssembly.dll”),這將驗證程序集及其所有內容與簽名時的狀態相同。

這不是安全的事情,因為繞過運行時程序集至少在某些情況下為特定程序集加載強名稱驗證非常容易。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM