Programmer To Programer 叢書
C# Class Design Handbook
Richard Conway, Teun Duynstee等著
清華大學出版社
程式碼群組織和中繼資料
共用組件 全域組件快取 Global Assembly Cache (GAC)
程式集 可重用的最小單元
中繼資料 為通用語言執行平台提供了在運行期間載入類型和調用方法所需的所有資訊
metadata 是元編程的基礎,在很多系統中也是根本的東西,瞭解這個東西可以比較深入的瞭解某個架構
查看中繼資料最簡單方法使用ildasm.exe /adv或/advancel選項
.NET模組是一個可移植、可執行(PE)格式檔案
只有資料的模組 SDK包含一個工具Assembly Linker(AL.exe)
利用該工具將這些非MISL模組連結到程式集中
將該檔案編譯成模組,必須使用C#.NET命令列編譯器
不能使用Visual Studio .NET 因為它總是建立單、程式集
例如:csc /target:module csMod.cs csMod.netmodule
*.netmodule 是.NET的模組
增加模組到資訊清單中:
csc /addmodule: csMod.netmodule /addmodule:VBMod.netmodule MainMod.cs
程式部署
部署單程式集應用程式比較簡單,直接用xcopy部署。
私用組件部署應用程式也不複雜,將需要的程式集合放在同一個檔案夾或者用應用程式設定檔通知CLR在什麼位置尋找程式集
部署共用組件
添加到GAC 全域組件快取
但Microsoft不推薦應用程式與GAC相互依賴,應盡量使用應用私用組件部署方式
利用公有-私人金鑰組可以為程式集建立強式名稱
編譯期間編譯器使用私密金鑰,將相應的公開金鑰寫入資訊清單
sn (Strong Name) sn \k *.snk
MSDN中尋找"Keys crytography"尋找相應內容
publickey 較長的數字
public key token 公開金鑰令牌
sn \t *.snk
將共用組件安裝到GAC中
gacutil -i *.dll 需要管理員權限
或者在控制台的管理工具中找 .NET FrameWork Configuration