欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > asp.net源程序編譯為dll文件并調(diào)用的實(shí)現(xiàn)過程

asp.net源程序編譯為dll文件并調(diào)用的實(shí)現(xiàn)過程

熱門標(biāo)簽:400電話如何申請取消 騰訊地圖標(biāo)注手機(jī) 柳州電銷機(jī)器人公司 浦發(fā)電話機(jī)器人提醒還款 太原400電話上門辦理 電銷語音機(jī)器人型號參數(shù) 征途美甲店地圖標(biāo)注 昆明語音電銷機(jī)器人價(jià)格 百度地圖怎樣做地圖標(biāo)注

很多時(shí)候,我們需要將.cs文件單獨(dú)編譯成.dll文件,這就需要使用csc命令將.cs文件編譯成.dll動態(tài)鏈接庫文件。具體的操作步驟如下:

打開命令窗口->輸入cmd到控制臺->cd C:WINDOWSMicrosoft.NETFrameworkv1.1.4322

轉(zhuǎn)到vs.net安裝的該目錄下->執(zhí)行csc命令csc /target:library File.cs->在該目錄下產(chǎn)生一個(gè)對應(yīng)名字的.dll文件(前提:把.cs文件放到C:WINDOWSMicrosoft.NETFrameworkv1.1.4322目錄下)

csc命令的方式很多,請參考以下

編譯 File.cs 以產(chǎn)生 File.exe
csc File.cs 編譯 File.cs 以產(chǎn)生 File.dll
csc /target:library File.cs 編譯 File.cs 并創(chuàng)建 My.exe
csc /out:My.exe File.cs 通過使用優(yōu)化和定義 DEBUG 符號,編譯當(dāng)前目錄中所有的 C# 文件。輸出為 File2.exe
csc /define:DEBUG /optimize /out:File2.exe *.cs 編譯當(dāng)前目錄中所有的 C# 文件,以產(chǎn)生 File2.dll 的調(diào)試版本。不顯示任何徽標(biāo)和警告
csc /target:library /out:File2.dll /warn:0 /nologo /debug *.cs 將當(dāng)前目錄中所有的 C# 文件編譯為 Something.xyz(一個(gè) DLL)
csc /target:library /out:Something.xyz *.cs 編譯 File.cs 以產(chǎn)生 File.dll
csc /target:library File.cs這個(gè)就是我們使用最多的一個(gè)命令,其實(shí)可以簡單的寫成csc /t:library File.cs,另外的一個(gè)寫法是 csc /out:mycodebehind.dll /t:library mycodebehind.cs,這個(gè)可以自己指定輸出的文件名。
csc /out:mycodebehind.dll /t:library mycodebehind.cs mycodebehind2.cs,這個(gè)的作用是把兩個(gè)cs文件裝到一個(gè).dll文件里

一、 動態(tài)鏈接庫概述:

什么是動態(tài)鏈接庫?DLL三個(gè)字母是Dynamic Link Library 的縮寫形式,動態(tài)鏈接庫 (DLL) 是作為共享函數(shù)庫的可執(zhí)行文件。動態(tài)鏈接提供了一種方法,使進(jìn)程可以調(diào)用不屬于其可執(zhí)行代碼的函數(shù)。函數(shù)的可執(zhí)行代碼位于一個(gè) DLL 中,該 DLL 包含一個(gè)或多個(gè)已被編譯、鏈接并與使用它們的進(jìn)程分開存儲的函數(shù)。DLL 還有助于共享數(shù)據(jù)和資源。多個(gè)應(yīng)用程序可同時(shí)訪問內(nèi)存中單個(gè) DLL 副本的內(nèi)容。

和大多數(shù)程序員一樣,你一定很使用過DLL吧。也曾感受到它的帶給你程序設(shè)計(jì)和編碼上的好處吧!今天這里探討一個(gè)主題:如何在C#創(chuàng)建和調(diào)用DLL(動態(tài)鏈接庫), 其實(shí)在很大意義上而講,DLL讓我更靈活的組織編寫我們的應(yīng)用程序,作為軟件設(shè)計(jì)者,可一個(gè)根據(jù)它來達(dá)到很高的代碼重用效果。下面我來介紹一下在C#中如何創(chuàng)建和調(diào)用DLL。

二、準(zhǔn)備工作

我們需要對我們接下來要做的事情做個(gè)簡單的介紹,在本文我們將利用C#語言創(chuàng)建一個(gè)名為 MyDLL.DLL的動態(tài)鏈接庫,在這個(gè)動態(tài)鏈接庫文件中我們將提供兩個(gè)功能一個(gè)是對兩個(gè)參數(shù)交換他們的值,另一個(gè)功能是求兩個(gè)參數(shù)的最大公約數(shù)。然后創(chuàng)建一個(gè)應(yīng)用程序使用這個(gè)DLL。運(yùn)行并輸出結(jié)果。

三、創(chuàng)建DLL

讓我們創(chuàng)建以下三個(gè)C#代碼文件:
1、 MySwap.cs

using System; 
namespace MyMethods 
{ 
  public class SwapClass 
  { 
   public static bool Swap(ref long i,ref long j) 
   { 
    i = i+j; 
    j = i-j; 
    i = i-j; 
    return true; 
   } 
  } 
} 

2、MyMaxCD.cs

using System; 
namespace MyMethods 
{ 
  public class MaxCDClass 
  { 
   public static long MaxCD(long i, long j) 
   { 
    long a,b,temp; 
    if(i>j) 
    { 
     a = i; 
     b = j; 
    } 
    else 
    { 
     b = i; 
     a = j; 
    } 
    temp = a % b; 
    while(temp!=0) 
    { 
     a = b; 
     b = temp; 
     temp = a % b; 
    } 
    return b; 
   } 
  } 
}

需要注意的是:我們在制作這兩個(gè)文件的時(shí)候可以用Visual Studio.NET或者其他的文本編輯器,就算是記事本也可以。這兩個(gè)文件雖然不在同一個(gè)文件里面,但是他們是屬于同一個(gè)namespace(名稱空間)這對以后我們使用這兩個(gè)方法提供了方便。當(dāng)然他們也可以屬于不同的名稱空間,這是完全可以的,但只是在我們應(yīng)用他們的時(shí)候就需要引用兩個(gè)不同的名稱空間,所以作者建議還是寫在一個(gè)名稱空間下面比較好。

接下來的任務(wù)是把這兩個(gè)cs文件變成我們需要的DLL文件。方法是這樣的:在安裝了Microsoft.NET Framework的操作系統(tǒng)上,我們可以在Windows所在目錄下找到Microsoft.NET目錄。在這個(gè)目錄下面提供了C#的編譯器,CSC.EXE運(yùn)行:csc /target:library /out:MyDLL.DLL MySwap.cs MyMaxCD.cs,完成后可在本目錄下面找到我們剛才生成的MyDLL.DLL文件/target:library 編譯器選項(xiàng)通知編譯器輸出 DLL 文件而不是 EXE 文件。后跟文件名的 /out 編譯器選項(xiàng)用于指定 DLL 文件名。如果/out后面不跟文件名編譯器使用第一個(gè)文件 (MySwap.cs) 作為 DLL 文件名。生成的文件為MySwap.DLL文件。

OK!我們創(chuàng)建動態(tài)鏈接庫文件的任務(wù)完成了,現(xiàn)在是我們享受勞動成果的時(shí)候了,下面我將介紹如何使用我們所創(chuàng)建的動態(tài)鏈接庫文件。

四、使用DLL

我們簡單寫一個(gè)小程序來測試一下我們剛才寫的兩個(gè)方法是否正確:

MyClient.cs代碼如下:

using System; 
using MyMethods; //這里我們引用剛才定義的名稱空間,如果剛才的兩個(gè)文件我們寫在兩個(gè)不同的名稱空間 
class MyClient 
{ 
  public static void Main(string[] args) 
  { 
   if (args.Length != 2) 
   { 
    Console.WriteLine("Usage: MyClient num1> num2>"); 
    return; 
   } 
   long num1 = long.Parse(args[0]); 
   long num2 = long.Parse(args[1]); 
   SwapClass.Swap(ref num1,ref num2); 
   // 請注意,文件開頭的 using 指令使您得以在編譯時(shí)使用未限定的類名來引用 DLL 方法 
   Console.WriteLine("The result of swap is num1 = {0} and num2 ={1}",num1, num2); 
   long maxcd = MaxCDClass.MaxCD(num1,num2); 
   Console.WriteLine("The MaxCD of {0} and {1} is {2}",num1, num2, maxcd); 
  } 
} 

若要生成可執(zhí)行文件 MyClient.exe,請使用以下命令行:

csc /out:MyClient.exe /reference:MyDLL.DLL MyClient.cs

/out 編譯器選項(xiàng)通知編譯器輸出 EXE 文件并且指定輸出文件名 (MyClient.exe)。/reference 編譯器選項(xiàng)指定該程序所引用的 DLL 文件。

五、執(zhí)行

若要運(yùn)行程序,請輸入 EXE 文件的名稱,文件名的后面跟兩個(gè)數(shù)字,例如:MyClient 123 456

六、輸出

The result of swap is num1 = 456 and num2 = 123 
The MaxCD of 456 and 123 is 3 

七、小結(jié):

動態(tài)鏈接具有下列優(yōu)點(diǎn):

1、節(jié)省內(nèi)存和減少交換操作。很多進(jìn)程可以同時(shí)使用一個(gè) DLL,在內(nèi)存中共享該 DLL 的一個(gè)副本。相反,對于每個(gè)用靜態(tài)鏈接庫生成的應(yīng)用程序,Windows 必須在內(nèi)存中加載庫代碼的一個(gè)副本。
2、節(jié)省磁盤空間。許多應(yīng)用程序可在磁盤上共享 DLL 的一個(gè)副本。相反,每個(gè)用靜態(tài)鏈接庫生成的應(yīng)用程序均具有作為單獨(dú)的副本鏈接到其可執(zhí)行圖像中的庫代碼。
3、升級到 DLL 更為容易。DLL 中的函數(shù)更改時(shí),只要函數(shù)的參數(shù)和返回值沒有更改,就不需重新編譯或重新鏈接使用它們的應(yīng)用程序。相反,靜態(tài)鏈接的對象代碼要求在函數(shù)更改時(shí)重新鏈接應(yīng)用程序。
4、提供售后支持。例如,可修改顯示器驅(qū)動程序 DLL 以支持當(dāng)初交付應(yīng)用程序時(shí)不可用的顯示器。
5、支持多語言程序。只要程序遵循函數(shù)的調(diào)用約定,用不同編程語言編寫的程序就可以調(diào)用相同的 DLL 函數(shù)。程序與 DLL 函數(shù)在下列方面必須是兼容的:函數(shù)期望其參數(shù)被推送到堆棧上的順序,是函數(shù)還是應(yīng)用程序負(fù)責(zé)清理堆棧,以及寄存器中是否傳遞了任何參數(shù)。
6、提供了擴(kuò)展 MFC 庫類的機(jī)制。可以從現(xiàn)有 MFC 類派生類,并將它們放到 MFC 擴(kuò)展 DLL 中供 MFC 應(yīng)用程序使用。
7、使國際版本的創(chuàng)建輕松完成。通過將資源放到 DLL 中,創(chuàng)建應(yīng)用程序的國際版本變得容易得多。可將用于應(yīng)用程序的每個(gè)語言版本的字符串放到單獨(dú)的 DLL 資源文件中,并使不同的語言版本加載合適的資源。
使用 DLL 的一個(gè)潛在缺點(diǎn)是應(yīng)用程序不是獨(dú)立的;它取決于是否存在單獨(dú)的 DLL 模塊。

您可能感興趣的文章:
  • 手動把a(bǔ)sp.net的類生成dll文件的方法
  • asp.net無法加載oci.dll等錯(cuò)誤的解決方法
  • ASP.NET利用MD.DLL轉(zhuǎn)EXCEL具體實(shí)現(xiàn)
  • Asp.Net數(shù)據(jù)控件引用AspNetPager.dll分頁實(shí)現(xiàn)代碼
  • asp.net網(wǎng)站開發(fā)包wq.dll打包下載
  • asp.net 大文件上傳 之 改版了的SlickUpload.HttpUploadModule(Krystalware.SlickUpload.dll)
  • ASP.NET MVC中EasyUI的datagrid跨域調(diào)用實(shí)現(xiàn)代碼
  • 在asp.net(c#)下實(shí)現(xiàn)調(diào)用cmd的方法
  • PHP中調(diào)用ASP.NET的WebService的代碼

標(biāo)簽:天門 德陽 江蘇 新疆 陽泉 張家界 蘭州 白山

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《asp.net源程序編譯為dll文件并調(diào)用的實(shí)現(xiàn)過程》,本文關(guān)鍵詞  asp.net,源程序,編,譯為,dll,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《asp.net源程序編譯為dll文件并調(diào)用的實(shí)現(xiàn)過程》相關(guān)的同類信息!
  • 本頁收集關(guān)于asp.net源程序編譯為dll文件并調(diào)用的實(shí)現(xiàn)過程的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    国产交换配乱淫视频免费| 欧美日韩成人综合天天影院 | 欧美视频日韩视频| 国产精品久久福利| 国产精品一区二区无线| 成熟人妻av无码专区| 精品三级av在线| 奇米影视在线99精品| 欧美熟妇精品黑人巨大一二三区| 欧美老女人在线| 亚洲福利国产精品| 黄色av电影网站| 欧美精品自拍偷拍| 午夜视频在线观看一区| 免费不卡的av| 制服视频三区第一页精品| 首页国产丝袜综合| 精品人妻一区二区三区日产乱码卜| 在线播放91灌醉迷j高跟美女| 亚洲成a人片综合在线| 午夜不卡久久精品无码免费| 制服.丝袜.亚洲.中文.综合| 美日韩一区二区| 超薄肉色丝袜一二三| 国产日韩欧美精品在线| 国产成人久久精品77777最新版本| 91精品少妇一区二区三区蜜桃臀| 国产精品久久午夜| 99久久99久久精品免费看蜜桃| 在线观看91精品国产入口| 亚洲一区二区三区视频在线播放| 中文在线观看免费视频| 欧美xxxx老人做受| 久久丁香综合五月国产三级网站| 大吊一区二区三区| 国产精品欧美精品| 91蜜桃婷婷狠狠久久综合9色| 欧美日韩一区久久| 日韩精品欧美成人高清一区二区| 精品人妻互换一区二区三区| 国产亚洲福利社区一区| 成人免费高清视频| 欧美日韩色综合| 蜜桃视频在线观看一区| 三级黄色片在线观看| 亚洲欧美欧美一区二区三区| 日本久久久久久久久久| 久久先锋影音av鲁色资源网| 成人午夜在线播放| 3d动漫精品啪啪一区二区竹菊| 裸体健美xxxx欧美裸体表演| 日韩成人短视频| 亚洲国产日韩a在线播放性色| 在线 丝袜 欧美 日韩 制服| 久久久久国产免费免费 | 日韩久久精品一区| 国产盗摄女厕一区二区三区| 欧美视频自拍偷拍| 老司机精品视频在线| 希岛爱理中文字幕| 亚洲国产aⅴ成人精品无吗| 欧洲av一区二区三区| 综合色天天鬼久久鬼色| 久久久久麻豆v国产精华液好用吗| 国产日韩一级二级三级| 亚洲熟妇一区二区| 久久久久久久久久久久久女国产乱| av不卡免费电影| 欧美成人一区二区三区| 99精品欧美一区二区蜜桃免费| 日韩一区二区三免费高清| 成人午夜伦理影院| 日韩欧美视频一区| av网站一区二区三区| 精品欧美一区二区在线观看| caoporen国产精品视频| 精品久久国产老人久久综合| 99re这里只有精品首页| 精品久久久久久无| 成人免费播放视频| 国产午夜精品久久久久久免费视 | 草草地址线路①屁屁影院成人| 中文字幕免费不卡| 玖草视频在线观看| 亚洲另类春色校园小说| 真实乱视频国产免费观看| 一区二区三区日本| 国产中文字幕久久| 日本美女一区二区三区| 欧美在线一区二区三区| 国产精品一区专区| 日韩三级视频在线观看| 免费高清视频在线观看| 国产精品视频一二三| 91精彩刺激对白露脸偷拍| 一区二区三区四区中文字幕| 亚洲女人久久久| 久久国产精品露脸对白| 欧美一区二区三区成人| 日本成人在线免费观看| 国产精品国模大尺度视频| 欧美 日韩 国产 成人 在线观看| 亚洲一区二区影院| 色94色欧美sute亚洲13| 国产宾馆实践打屁股91| 久久蜜桃av一区精品变态类天堂 | 热久久一区二区| 欧美色老头old∨ideo| 成人开心网精品视频| 久久精品夜色噜噜亚洲aⅴ| 国产精品无码在线| 亚洲香肠在线观看| 在线一区二区观看| 成人午夜视频免费看| 国产精品色呦呦| 国产大屁股喷水视频在线观看| 久久激情五月激情| 欧美成人a视频| 亚洲av网址在线| 婷婷开心激情综合| 欧美精品精品一区| 国产性猛交96| 一二三四社区欧美黄| 欧美在线一二三| 韩国三级hd中文字幕有哪些| 亚洲精品成人精品456| 色婷婷狠狠综合| 99精品在线观看视频| 亚洲欧美日韩在线| 色嗨嗨av一区二区三区| 99免费精品在线观看| 亚洲欧美激情在线| 在线视频欧美区| 无人码人妻一区二区三区免费| 亚洲欧美色综合| 欧美日韩你懂得| 无码任你躁久久久久久老妇| 三级在线观看一区二区| 日韩区在线观看| 91网站免费视频| 国产在线播放一区三区四| 国产日韩精品一区| 久久国产精品国语对白| proumb性欧美在线观看| 亚洲精品成人悠悠色影视| 欧美日韩国产综合一区二区三区 | 久久精品国产亚洲aⅴ| 精品99999| av在线免费播放网址| www.日本不卡| 一区二区三区视频在线看| 9191国产精品| 国产小视频自拍| 国产精品一区久久久久| 亚洲女厕所小便bbb| 欧美欧美欧美欧美| 亚洲午夜久久久久久久久红桃| 国产主播一区二区三区| 国产精品久久久久久久久动漫| 色婷婷久久综合| www男人天堂| 久久爱另类一区二区小说| 中文一区在线播放| 91福利在线播放| 日本黄色免费观看| 激情五月播播久久久精品| 中文一区在线播放| 欧美手机在线视频| 爱爱免费小视频| 懂色av一区二区在线播放| 一区二区成人在线观看| 日韩欧美亚洲国产精品字幕久久久 | 最新热久久免费视频| 欧美日韩亚洲综合一区| 日本高清www| 北岛玲一区二区三区四区| 亚洲一区二区三区四区五区中文| 精品国产人成亚洲区| 欧美卡一卡二卡三| 男男做爰猛烈叫床爽爽小说| 国产精品夜夜嗨| 亚洲国产另类av| 久久久久久久久久久黄色| 在线观看三级视频欧美| 国产精品无码久久久久一区二区| 成人精品小蝌蚪| 日韩电影免费一区| 国产精品三级av| 91麻豆精品91久久久久久清纯| 一级片黄色录像| 又色又爽又黄18网站| 国产一本一道久久香蕉| 亚洲一区在线观看免费| 久久久精品蜜桃| 欧美日韩不卡一区| 欧美性x x x| 一级性生活大片| 佐山爱在线视频| 国产成人av电影在线播放| 日韩成人免费在线|