PetShop中.snk文件和AssemblyInfo.cs文件的作用

snk文件在.net裏面被用作存放密鑰或密鑰對的存儲文件,生成密鑰對snk文件可以用.net中的sn.exe命令,如“sn   -k   keyPair.snk”。   
    
  snk本身只是用來存放非對稱密鑰的,但在各個需要用到加密、簽名的地方都可以使用:   
  1) 用snk文件生成強命名程序集,這樣一個assembly纔可以被賦予full-trust屬性,也可以被添加到GAC中。在VS.NET中生成 strong-named   assembly,只需要在AssemblyInfo.cs裏面添加一下代碼並編譯即可:   
  [assembly:   AssemblyDelaySign(false)]   
  [assembly:   AssemblyKeyFile("..//..//keyPair.snk")]   
  [assembly:   AssemblyKeyName("")]   

強 命名程序集的緣由:      目前Windows中出現的DLL Hell問題(兩個不同的公司可能開發處具有相同名稱的程序集,如果將相同名稱的程序 集放置到同一個目錄下,則會出現程序集覆蓋現象,最後安裝的程序集會覆蓋前面的程序集,從而可能導致應用序不能正常運行)。由此看來,僅靠名稱來區分程序 集是不足夠的。CLR採取了強命名程序集的方式來唯一的表示程序集。強命名程序集包含四個標識:名稱,版本號,語言文化標識和一個共有/私有密鑰對。兩種 程序集/兩種部署方式:.Net支持兩種程序集:弱命名程序集和強命名程序集(注:.Net框架中沒有弱命名程序集,只是爲了和強命名程序集相對應而 已)。弱命名程序集和強命名程序集在結構上是相同的。他們都採用PE文件格式,包含PE表頭,CLR表頭,元數據和清單表。區別在於:強命名程序集擁有一 個發佈者的公鑰/私鑰簽名對,他們用於唯一的標識程序集的發佈者。通過公鑰/私鑰對,我們可以對程序集進行唯一的標識,安全策略和版本策略。


AssemblyInfo.cs主要用來設定生成的有關程序集的常規信息dll文件的一些參數
請看以下具體說明:
//備註: 
[assembly:AssemblyDescription("用最強的搶劫類寫成!")]
//產品名稱
[assembly:AssemblyProduct("無爲搜索")]
//公司
[assembly:AssemblyCompany("無爲網絡")]
//合法商標
[assembly:AssemblyTrademark("無爲")];
//內部名稱
[assembly:AssemblyCulture("")]
//設計者
[assembly:AssemblyDescription("無爲類庫")]
//版權
[assembly:AssemblyCopyright("")]
//配置文件
[assembly:AssemblyConfiguration("Configuration")]
//產品版品: 可指定,如下
// 程序集的版本信息由下列 4 個值組成:
//
//      主版本
//      次版本
//      內部版本號
//      修訂號
//
// 您可以指定所有這些值,也可以使用“修訂號”和“內部版本號”的默認值,方法是按
// 如下所示使用 '*':
[assembly:AssemblyVersion("1.0.*")]

生成dll文件以後再點擊右鍵看看它的屬性,你就爲在裏面看到熟悉的內容了

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章