c#之程式集
程式集的定義:
1.程式集是乙個或多個託管模組,以及一些資源檔案的邏輯組合。
2.程式集是元件復用,以及實施安全策略和版本策略的最小單位。
3.程式集是包含乙個或者多個型別定義檔案和資源檔案的集合。在程式集包含的所有檔案中,有乙個檔案用於儲存清單。(清單是元資料部分中一組資料表的集合,其中包含了程式集中一部分檔案的名稱,描述了程式集的版本,語言文化,發布者,共有匯出型別,以及組成該程式集的所有檔案)。
程式集的物理表現:
1.可執行程式集:存在乙個用於表示exe的檔案,這個檔案是程式集的入口點。
2.提供功能的程式集:存在乙個用於表示dll的檔案,這個檔案是程式集的入口點。
程式集和託管模組的關係:
1.可以使用 csc /t:module type1.cs
csc /t:module type2.cs
這樣就可以生成兩個託管模組: type1.netmodule type2.netmodule
2.使用命令將模組整合到程式集中:
csc /out:***.dll /t:library /addmodule: type1.netmodule type2.netmodule ***.cs
這樣就有了程式集***.dll: 它由***.dll type1.netmodule type2.netmodule 組成。***.dll代表了這組程式集。***.dll也可以是***.exe。也可以使用al來建立:
al /out:***.dll /t:library type1.netmodule type2.netmodule.
3.衛星程式集:
3.1建立資源檔案:myresource.cn.resx 或者myresource.cn.txt
3.2使用命令resgen myresource.cn.resx myresource.cn.resources 編譯資源
3.3 al.exe /culture:cn /out:"cn/helloworld.resources.dll" /embed:"myresources.cn.resources" /template:"helloworld.exe"
3.4在主程式集helloworld中如何訪問衛星程式集:
system.resources.resourcemanager resources =
new system.resources.resourcemanager("helloworld.resources.myresources",
system.reflection.assembly.getexecutingassembly());
// print out the "helloworld" resource string
console.writeline(resources.getstring("helloworld"));
// get the new culture name
console.write(resources.getstring("nextculture"));
3.5部署主程式集和衛星程式集
│ helloworld.exe
├─ko-kr
│ helloworld.resources.dll
├─it
│ helloworld.resources.dll
├─fr
│ helloworld.resources.dll
├─es
│ helloworld.resources.dll
├─en
│ helloworld.resources.dll
├─en-us
│ helloworld.resources.dll
└─de
helloworld.resources.dll
通過al工具來改變乙個程式集的各種屬性:
可以參見al的幫助
通過assemblyinfo.cs檔案來改變乙個程式集的屬性:
這個檔案中最重要的幾個特性是:
1、assemblyversion: 格式: major version ---- minor version ------ build version ------ revision
2、[assembly: assemblyculture("")]
3、[assembly: assemblydelaysign(false)]
4、[assembly: assemblykeyfile("")]
5、[assembly: assemblykeyname("")]
這幾個各個程式集屬性的**
將程式集組成各種應用程式,進行程式集的部署:
不考慮應用程式的型別,可以將程式集的部署分為私有部署和全域性部署。
私有部署:
1.本地應用程式的部署結構
|-----auxfilesdir
|------ ***.dll
|------ yyy.dll
2.asp.net應用程式和xml web服務應用程式
對於asp.net web視窗和xmlweb服務應用程式,配置檔案必須位於web應用程式的虛擬根目錄下,並且名稱總是web.config 。另外子目錄也可以包含它們自己的web.config檔案,並繼承上一目錄的配置設定。
3. 對於包含客戶方空件、以微軟的ie瀏覽器為宿主的程式集。(沒有見過)
C 程式集別名
雖然開發專案時很少遇到兩個相同完全限定名的型別 命名空間.類名 但偶然還是會遇到這種情況。比如,在某些情況下,專案中必須引用某程式集的新舊多個版本。通過使用外部程式集別名,可以將來自每個程式集的命名空間包裝在由別名命名的根級別命名空間中,從而使這些命名空間可以在同一檔案中使用。msdn官方解釋 注意...
C 程式集系列11,全域性程式集快取
全域性程式集快取 gac global assembly cache 用來存放可能被多次使用的強名稱程式集。當主程式需要引導程式集的時候,優先選擇到全域性程式集快取中去找尋需要的程式集。為什麼需要全域性程式集快取?假設程式a引用b程式集,程式c也引用b程式集,在這種情況下,可以把b程式集放到乙個全域...
C 程式集系列08,設定程式集版本
區別乙個程式集,不僅僅是程式集名稱,還包括程式集版本 程式集公匙 程式集文化等,本篇體驗通過介面和編碼設定程式集版本。通過visual studio設定程式集版本 右鍵專案,選擇 屬性 選擇 應用程式 點選 程式集資訊 設定如下,點選確定 點選專案properties資料夾下的assemblyinf...