日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
學(xué)習(xí)C#程序集

一、C#程序集的一些基本概念:

程序集是包含一個(gè)或多個(gè)類型定義文件和資源文件的集合。它允許我們分離可重用類型的邏輯表示和物理表示。

程序集是一個(gè)可重用、可實(shí)施版本策略和安全策略的單元。它允許我們將類型和資源劃分到不同的文件中,這樣程序集的使用者便可以決定將哪些文件打包在一起部署。一旦CLR加載了程序集中包含清單的那個(gè)文件,它就可以確定程序集的其他文件中哪些包含了程序正在引用的類型和資源。任何程序集的使用者僅需要知道包含清單的文件名稱。文件的劃分對(duì)使用者是透明的,并且可以在將來改變,同時(shí)又不會(huì)破壞現(xiàn)有應(yīng)用程序的行為。

C#程序集的特性:

1、程序集定義了可重用的類型。

2、程序集標(biāo)識(shí)有一個(gè)版本號(hào)。

3、程序集可以包含與之相關(guān)的安全信息。

二、多文件集:

使用多文件集的三個(gè)原因:

1、可以將類型分別實(shí)現(xiàn)在不同的文件中,從而允許文件在互聯(lián)網(wǎng)環(huán)境中進(jìn)行增量下載。

2、可以按需要向程序集中添加資源或數(shù)據(jù)文件。(數(shù)據(jù)文件可以是任何格式:文本文件、Excel電子表格、Word表格、或者任何我們喜歡的格式)。

3、可以使我們創(chuàng)建的程序集包含一些用不同編程語言實(shí)現(xiàn)的類型。

注意:Visual Studio .NET集成開發(fā)環(huán)境(Integrated development environment,簡(jiǎn)稱IDE)本身不支持創(chuàng)建多文件程序集,如果需要?jiǎng)?chuàng)建多文件程序集,必須求助于命令行工具。

兩個(gè)源代碼文件:Rut.cs (包含很少使用的類型)Fut.cs (包含經(jīng)常使用的類型)

 
 
 
  1. csc  /t:module Rut.cs           //生成Rut.netmodule文件  
  2. csc  /out:UnionType.dll  /t:library  /addmodule Rut.netmodule  Fut.cs  
  3.   //生成UnionType.dll類庫文件 Run.netmodule文件作為程序集的一部分來對(duì)待 

三、程序鏈接器:

程序鏈接器:Assembly Linker 即AL.exe

1、使用前提:

如果我們要?jiǎng)?chuàng)建的程序集包含來自不同編譯器生成的模塊,而使用的編譯器又不支持類似于C#中/addmodule那樣的命令行開關(guān),或者生成模塊時(shí)還不知道程序集的打包需求,這時(shí)程序集鏈接器就顯得非常有用。

2、使用實(shí)例:

 
 
 
  1. csc /t:module Rut.cs  
  2.  
  3. csc /t:module Fut.cs  
  4.  
  5. al /out: UnionType.dll /t:library Fut.netmodule Rut.netmodule  

四、資源文件的添加

1.使用csc.exe來添加資源文件:

/resource 將把指定的資源文件嵌入到產(chǎn)生的程序集PE文件中,并更新ManifestResourceDef表中的內(nèi)容。

/linkresource 將向ManifestResourceDef和FileDef清單表中添加一條目,使其指向一個(gè)單獨(dú)的資源文件。

2.使用AL.exe來添加資源文件:

/embed[resource]:該命令行接受任何類型的文件,將其內(nèi)容嵌入到產(chǎn)生的PE文件中。同時(shí),清單中的ManifestResourceDef表將被更新以反映該資源的存在。

/link[resource]:該命令將只更新清單中的ManifestResourceDef表和FileDef表,以反映資源的存在,并標(biāo)識(shí)出程序集的哪個(gè)文件包含著資源文件。資源文件本身不會(huì)被嵌入到程序集PE文件中,它仍然保持獨(dú)立,并且須和其它程序一起打包、部署。

3.將Win32資源嵌入到程序集中:

通過AL.exe或csc.exe添加/win32res命令行開關(guān)指定一個(gè).res文件路徑來實(shí)現(xiàn)。

通過AL.exe或csc.exe添加/win32icon命令行開關(guān)并指定一個(gè).ico文件路徑來實(shí)現(xiàn)。

五、C#程序集版本信息:

版本號(hào)由四個(gè)部分組成:主版本號(hào)、次版本號(hào)、生成版本號(hào)、修訂版本號(hào)

例:2.5.719.2 主版本號(hào)與次版本號(hào)組成“面向公眾”的版本部分,第三個(gè)版本號(hào)719表示程序集的生成版本,***一個(gè)版本號(hào)2表示對(duì)生成版本的修訂版本。

一個(gè)程序集的三個(gè)相關(guān)版本號(hào):

1、AssemblyFileVersion: 該版本號(hào)存儲(chǔ)在Win32版本資源中,它僅僅是一個(gè)輔助性的信息。

2、AssemblyInformationalVersionAttribute:該版本號(hào)也存儲(chǔ)在Win32版本資源中,僅輔助性作用。

3、AssemblyVersion:該版本號(hào)存儲(chǔ)在AssemblyDef清單元數(shù)據(jù)表中。這個(gè)版本號(hào)非常重要,它用來惟一地標(biāo)識(shí)一個(gè)程序集。

六、語言文化:

不提倡創(chuàng)建包含代碼的衛(wèi)星程序集,但還是有可能做到。如果我們?cè)敢猓匀豢梢杂肧ystem.Reflection.AssemblyCultureAttribute定制特性來代替AL.exe的/culture命令行開關(guān)來指定語言文化。示例如下:

//將程序集的語言文化設(shè)置為瑞士德語

[assembly :AssemblyCulture (“de-CH”)]

通常情況下,我們創(chuàng)建的程序集不應(yīng)該引用衛(wèi)星程序集。也就是一個(gè)程序集的AssemblyRef條目指向的都應(yīng)該是語言文化中性的程序集。如果想訪問一個(gè)衛(wèi)星程序集中的類型或成員,我們應(yīng)該使用反射技巧。

衛(wèi)星程序集:標(biāo)識(shí)著特定語言文件的程序集稱為衛(wèi)星程序集。

七、共享程序集:

1..NET框架支持的兩種程序集:

弱命名程序集:Weakly named assembly

強(qiáng)命名程序集:Strongly named assembly

二者之間的真正區(qū)別在于:強(qiáng)命名程序集有一個(gè)發(fā)布者的公鑰/私鑰對(duì)簽名,其中的公鑰/私鑰匙對(duì)惟一地標(biāo)識(shí)了程序集的發(fā)布者。

強(qiáng)命名集包含四個(gè)惟一標(biāo)識(shí)程序集的特性:文件名(沒有擴(kuò)展名)、版本號(hào)、語言文化標(biāo)識(shí)和一個(gè)公有密鑰標(biāo)識(shí)。

例:”MyTypes,Version=1.0.8123.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”

2.強(qiáng)命名實(shí)用工具:

Strong Name Utility即SN.exe 和.Net框架SDK,以及Visual studio .Net一起發(fā)布的一個(gè)工具。

例:SN –k MyCompany.keys

該命令告訴SN.exe創(chuàng)建一個(gè)名為Mycompany.keys的文件。Mycompany.keys文件將包含一對(duì)以二進(jìn)制格式存儲(chǔ)的公有密鑰和私有密鑰。

查看公有密鑰:(必須執(zhí)行下面兩步)

SN –p MyCompany.keys MyCompany.publickey

SN –tp MyCompany.publickey

創(chuàng)建強(qiáng)命名程序集:

[assembly: AssemblykeyFile ( “MyCompany.keys”)]

3.程序集的兩種部署方式:即私有部署方式和全局部署方式

私有部署方式將程序集部署在應(yīng)用程序的基目錄及其子目錄下,弱命名程序集只能進(jìn)行私有部署。

全局部署方式將程序集部署在一些CLR確知的地方。強(qiáng)命名程序集既可以進(jìn)行私有部署,也可以進(jìn)行全局部署。

4.System.Reflection.AssemblyName類:

利用它,我們可以很容易地創(chuàng)建一個(gè)程序集名稱,并獲取一個(gè)程序集名稱的各個(gè)部分。公有實(shí)例屬性:如CultureInfo、FullName、KeyPair、Name以及Version.該類提供了幾個(gè)公有實(shí)例方法,如GetPublicKey、GetPublicKeyToken、SetPublicKey、以及SetPublicKeyToken。

八、其他

元數(shù)據(jù)標(biāo)識(shí)是一個(gè)4字節(jié)的數(shù)值,其高位字節(jié)表示標(biāo)記的類型(0x01 = TypeRef ,0x02 =TypeDef, 0x26 = FileDef , 0x27 = ExportedType)

為使我們創(chuàng)建的C#程序集出現(xiàn)在.NET選項(xiàng)卡的列表中,可以將下面的子鍵添加到注冊(cè)表中:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\

【編輯推薦】

  1. C#事件和委托的編譯代碼
  2. C#事件的由來
  3. 學(xué)習(xí)C#委托:將方法綁定到委托
  4. 學(xué)習(xí)C#委托:將方法作為方法的參數(shù)
  5. C# 插件構(gòu)架實(shí)例詳解

分享文章:學(xué)習(xí)C#程序集
本文地址:http://www.5511xx.com/article/dhgdpej.html