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

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
20分鐘讀懂程序集

前言

創(chuàng)新互聯(lián)擁有網(wǎng)站維護(hù)技術(shù)和項(xiàng)目管理團(tuán)隊(duì),建立的售前、實(shí)施和售后服務(wù)體系,為客戶提供定制化的成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、綿陽(yáng)電信機(jī)房機(jī)柜租用解決方案。為客戶網(wǎng)站安全和日常運(yùn)維提供整體管家式外包優(yōu)質(zhì)服務(wù)。我們的網(wǎng)站維護(hù)服務(wù)覆蓋集團(tuán)企業(yè)、上市公司、外企網(wǎng)站、成都做商城網(wǎng)站、政府網(wǎng)站等各類型客戶群體,為全球上千多家企業(yè)提供全方位網(wǎng)站維護(hù)、服務(wù)器維護(hù)解決方案。

說(shuō)到程序集,我剛開(kāi)始對(duì)這個(gè)名詞特別的郁悶!~。然后 前些天花了些時(shí)間 好好讀了一下,現(xiàn)在比較清晰了,把一些書上看到的 記下來(lái),以饗讀者。希望沒(méi)浪費(fèi)你們的時(shí)間。

一.程序集是什么

程序集,說(shuō)白了就是一個(gè) *.dll 或者 *.exe為后綴的文件。當(dāng)然,如樓下朋友所說(shuō),是基于.NET平臺(tái)的!~。謝謝。

程序集,包括以下部分:

  • Windows 文件首部
  • CLR 文件首部
  • 元數(shù)據(jù)
  • 程序集清單
  • 可選的內(nèi)嵌資源

Windows文件首部(知道有這么一個(gè)東西就行):就是告訴windows操作系統(tǒng),本應(yīng)用程序是ASP.NET 還是Winform還是控制臺(tái)應(yīng)用程序。那怎么查文件首部信息呢?

打開(kāi)VS的命令行工具 然后輸入

dumpbin/headers 項(xiàng)目名稱

程序集分為2類,私有程序集和共享程序集。

CLR 首部信息:運(yùn)行于.NET 的程序都是需要這個(gè)標(biāo)志哦!~如果需要查看它,也很簡(jiǎn)單,

打開(kāi)VS的命令行工具 然后輸入

dumpbin/clrheaders 項(xiàng)目名稱

元數(shù)據(jù):元素就是.NET 編譯后的語(yǔ)言,我們可以打開(kāi)ILDASM.exe 工具進(jìn)行查看,然后再按Ctrl +M 打開(kāi)元數(shù)據(jù)查看:

程序集清單:就是記錄這個(gè)程序包含了哪些dll程序以及這個(gè)版本是啥等等。。。

二.單文件程序集和多文件程序集

2.1單文件程序集

我們大多數(shù)的情況用的都是單文件程序集哦!。這個(gè)特別好理解,比如我們新建一個(gè)類庫(kù)工程,然后進(jìn)行編譯,一般來(lái)說(shuō),編譯之后我們會(huì)得到一個(gè) *.dll的文件,ok,這個(gè)就是單文件程序集啦!~

2.1多文件程序集

好,我們來(lái)說(shuō)說(shuō)多文件程序集。我們得知道,程序集由什么構(gòu)成?是模塊。所以,多文件程序集就是有多個(gè)模塊構(gòu)成的程序集。很遺憾的是,如果我們需要構(gòu)建多文件程序集,VS IDE 是沒(méi)法做的,只能通過(guò)命令行的csc.exe 命令進(jìn)行。真辛苦~~~。

(1)在記事本里 寫一段簡(jiǎn)單的code,如下:

 
 
 
 
  1. using System;  
  2.  
  3. namespace Person  
  4. {  
  5.   public class China  
  6.   {  
  7.     public void DisplayChinese()  
  8.     {  
  9.       Console.WriteLine("I'm Chinese");  
  10.     }  
  11.   }  

然后,打開(kāi)你VS 命令行,把上面的生成一個(gè)模塊,命令如下:

csc.exe /t:module China.cs

我們能看到生成了一個(gè):China.netmodule的模塊文件。

(2),接著我們?cè)谛陆ㄒ粋€(gè)文件,并且這個(gè)文件生成是dll文件。

 
 
 
 
  1. using System;  
  2.  
  3. namespace Person  
  4. {  
  5.   public class Japan  
  6.   {  
  7.     public void DisplayJapanese()  
  8.     {  
  9.       Console.WriteLine("I'm Japanese");  
  10.     }  
  11.   }  

(3)把剛China.netmodule模塊加入到剛需要生成的dll文件中。

命令是:

csc.exe /t:library /out:Lanny.dll Japan.cs /addmodule:China.netmodule

我們能看到生成了一個(gè)Lanny.dll的文件。。我們可以把這個(gè)文件引入到程序中進(jìn)行測(cè)試。Ok,我們一個(gè)多文件程序集就這樣程序。但是,我感覺(jué)這樣的用處不大。

 
 
 
 
  1. Japan j = new Japan();  
  2.       j.DisplayJapanese();  
  3.       Console.ReadKey(); 

能彈出“I'm Japanese”,說(shuō)明我們引用成功了。

#p#

三。程序集的分類

程序集分為私有程序集和共享程序集

3.1私有程序集。

(1)啥是私有程序集。顧名思義,私 就是 私有的意思。就是我們新建的項(xiàng)目庫(kù)中保留的dll 都是私有程序集。比如,在我其中一個(gè)MyTestConsle的項(xiàng)目,在Bin/Debug里面都是私有程序集。

(2)配置私有程序集(probing 屬性)

一般情況下,我們需要dll,直接copy過(guò)去,是的,這樣很方便。但是,有的時(shí)候,我們需要把dll放到不同的文件中,那么這個(gè)時(shí)候,就需要進(jìn)行配置。別擔(dān)心,特別的簡(jiǎn)單哦。

比如,我們?cè)贑盤下面新建一個(gè) MyTest的文件夾。我把剛的2個(gè)程序拷到這里來(lái),并且點(diǎn)擊MyTestProject.exe,Ok,可以運(yùn)行 這樣沒(méi)問(wèn)題。。

但是,如果我新建一個(gè)“MyAllLibraries”文件夾,把我的Lanny.dll 文件放進(jìn)去,如下圖,那我運(yùn)行,我們都知道 肯定會(huì)報(bào)錯(cuò)

咋辦呢?這個(gè)時(shí)候就需要我們?nèi)ヅ渲昧恕N覀冊(cè)贛yTestProject.exe同級(jí)下新建一個(gè)“MyTestProject.exe.config”文件。入下圖:

MyTestProject.exe.config的內(nèi)容是:

 
 
 
 
  1.  
  2.  
  3.    
  4.      
  5.        
  6.      
  7.    
  8.  

特別好理解,就是指明程序如果沒(méi)有找到這個(gè)dll文件,那么我去哪里尋找。。。這樣,我們就能順利運(yùn)行了。不截圖了。

(3)使用VS IDE 進(jìn)行配置

我們能新建Application Configuration File,然后進(jìn)行配置。這個(gè)時(shí)候,它會(huì)自動(dòng)把更新的內(nèi)容更新到相應(yīng)的 程序名.exe.config中。。

3.2共享程序集

(1)了解共享程序集

上一節(jié)中,我們梳理了下私有程序集,現(xiàn)在我們說(shuō)下共享程序集。那么它們之間最大的區(qū)別是什么呢?它們的本質(zhì)區(qū)別是共享程序集的一個(gè)副本可供一臺(tái)機(jī)器上的多個(gè)應(yīng)用程序使用。

比如,我現(xiàn)在新建一個(gè) Windows Forms的程序,里面有一個(gè)“MessageBox.Show()”方法,可是很遺憾,你沒(méi)法再你新創(chuàng)建的應(yīng)用程序下面找到:System.Windows.Forms.dll的引用,為啥?因?yàn)樗枪蚕淼某绦蚣?。不?你看下圖,我沒(méi)騙你把。

那么共享文件部署到哪里呢?它安裝在GAC(Globle Assemble Cache)中,這個(gè)GAC  在下面的目錄中。

#p#

(2)部署GAC--強(qiáng)命名

部署到GAC之前,一定要給這個(gè)程序集賦一個(gè)強(qiáng)命名,它就像是.NET中的GUID,是一個(gè)唯一標(biāo)識(shí)符。它的作用是用于標(biāo)識(shí)給定.NET二進(jìn)制文件的發(fā)行者。

強(qiáng)命名的組成包括:

  • 程序集的友好名稱
  • 程序集的版本號(hào)
  • 公鑰值
  • 等等。。

那怎么生成強(qiáng)命名呢?有2種方法,一種是命令形式,另外一個(gè)VS 圖形化,最后的時(shí)候附帶上。

①生成強(qiáng)命名文件

sn.exe 工具生成一個(gè)文件 以 *.snk(strong name key)后綴的文件。

語(yǔ)法是:

sn -k 文件名.snk

②把強(qiáng)命名文件放進(jìn)程序中

我們只需要把剛我們myTestKey.snk 告訴編譯器就好了。那怎么告訴呢?就是把信息寫進(jìn)AssemblyInfo.cs 文件。

③安裝強(qiáng)命名的程序集

我們需要使用gacutil.exe 工具。

安裝:gacutil.exe -i 程序集名稱

查看:gacutil.exe -l 程序集名稱

卸載:gacutil.exe -u 程序集名稱

 現(xiàn)在我們打開(kāi)“C:\Windows\assembly”的時(shí)候,我們并沒(méi)有找到剛MyLibrary.dll。原來(lái)在.NET 4中,GAC 被分在2個(gè)地方。.NET 1.0 到.NET 3.5的基礎(chǔ)類庫(kù) 就放到“C:\Windows\assembly”這里。而且.NET 4 編譯下的程序集,是放到“C:\Windows\Microsoft.NET\assembly\GAC_MSIL\”中。。

3.3 使用共享GAC

那我們就導(dǎo)入就好了?。?。如果我們導(dǎo)入了一個(gè)共享的GAC,這個(gè)時(shí)候 我們沒(méi)法再本地程序集下面找到這個(gè)程序集,只能在剛我們所說(shuō)的位置。

3.4圖形化配置GAC

①打開(kāi)properties

我們選擇

②創(chuàng)建強(qiáng)命名文件

③顯示


網(wǎng)站欄目:20分鐘讀懂程序集
文章分享:http://www.5511xx.com/article/djihiep.html