拓展名是EXE或者DLL的.net可執行程序稱為程序集。
.net程序集與一般的EXE,DLL的區別在于,它包含有metadata。
?
私有程序集
位于應用程序的目錄下。
共享程序集
必須有一個特殊的版本號,唯一的名稱,通常安裝在全局程序集緩存(gobal assembly cache ,GAC)中。
應用程序域
使得多個程序可以在一個進程中運行,并且一個程序中的錯誤不會直接影響同一個進程中的其他應用程序。
程序集的結構:
元數據,描述導出類型和方法類型的元數據,MSIL代碼和資源。
?
《命名空間&程序集關系》
一個程序集可有多個命名空間,一個命名空間可以分布在多個程序集中。
盡管程序集中包含相同命名空間,但是沒有相同類名。
命名空間---抽象層
程序集-----物理層
《模塊&程序集》
一個程序集包含多個模塊,模塊在需要的時候加載可以更快的啟動程序集(講的比較空)。
csc /target:module a.cs??? 生成a.netmodule
csc /target:library /addmodule :a.netmodule /out: b.dll
?
動態加載和創建程序集
要動態編譯C#代碼,可以用Microsoft.CSharp命名空間下的CSharpCodeProvider類
?
應用程序域
使用托管IL代碼,運行庫就不能訪問同一個進程中另一個應用程序的內存。
終止應用程序域時,里頭的程序集全部釋放,如果在主應用程序域中是不能卸載。
?
先到這里,開始插件~哈哈