建議120 為程式集指定強名稱

2021-07-22 13:21:58 字數 672 閱讀 4745

建議120:為程式集指定強名稱

雖然強名稱在設計之初有防止被未授權的第三方軟體非法執行程式的作用,但是因為它的破解方法並不難,所以現在強名稱更多的意義在於它可以避免出現「dll hell」現象。

「dll hell」是指多個應用程式可能呼叫同乙個dll的情況。在應用程式使用過程中,常常會碰到這樣一種情況:應用程式需要更新。在更新過程中,很有可能將會和別的應用程式公用的dll也更新了。在以前,這可能會導致其他應用程式無法繼續正常工作。

強名稱原則上擴大了dll的唯一標識,這個標識包括:程式集名稱、版本號、區域性資訊、發行公鑰及數字簽名。由於加密演算法本身已保證不會生成相同的公鑰,經過強標識後的程式集,也就不會存在相同性的問題。這就意味著,哪怕存在相同名稱的dll,該dll的內容也完全一致,但是只要他們的強名稱不同,就不會帶來呼叫混亂的情況。

生成強名稱簽名檔案的命令如下:

sn -k yourprofile.snk

也可以在vs中生成該簽名檔案。

注意 該簽名檔案包含了公鑰-私鑰對,所以它是乙個機密檔案。如果我們正在開發商業應用程式,應該始終由專人負責保管簽名檔案,並對程式集進行簽名,它不應對所有人開放。

**:《編寫高質量**改善c#程式的157個建議》陸敏技

指定程式集的路徑

在配置檔案中增加一節,如下 可以在msdn中索引 以上方法有一點要求,就是程式集必須放置在主程式所在資料夾的子資料夾中,要不然不起作用。下面的方法可以指定任何位置,包括url 上面的主程式可以在d盤或其他路徑,任何能夠找到carlibary.dll。其中publickeytoken不能為空,即必須為...

未能載入檔案或程式集 系統找不到指定檔案

前言 在網上折騰了很久,終於在一次次嘗試後,把win10 vs2013 cuda8.0平台搭建成功,在檢查cuda編譯器nvcc時,沒有發現問題,但在執行cuda samples裡的各個示例時,都會出現如下錯誤 error msb4062 未能從程式集c progarm file x86 msbul...

iis7為應用程式池指定標識(執行帳號)

開啟 iis 管理器。有關如何開啟 iis 管理器的資訊,請參閱 開啟 iis 管理器 iis 7 在 連線 窗格中,展開伺服器節點,然後單擊 應用程式池 在 應用程式池 頁中,選擇要為其指定標識的應用程式池,然後單擊 操作 窗格中的 高階設定 對於 標識 屬性,單擊 按鈕以開啟 應用程式池標識 對...