校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > asp.net源程序編譯為dll文件并調用的實現過程

asp.net源程序編譯為dll文件并調用的實現過程

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

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

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

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

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

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

一、 動態鏈接庫概述:

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

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

二、準備工作

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

三、創建DLL

讓我們創建以下三個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; 
   } 
  } 
}

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

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

OK!我們創建動態鏈接庫文件的任務完成了,現在是我們享受勞動成果的時候了,下面我將介紹如何使用我們所創建的動態鏈接庫文件。

四、使用DLL

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

MyClient.cs代碼如下:

using System; 
using MyMethods; //這里我們引用剛才定義的名稱空間,如果剛才的兩個文件我們寫在兩個不同的名稱空間 
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 指令使您得以在編譯時使用未限定的類名來引用 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); 
  } 
} 

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

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

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

五、執行

若要運行程序,請輸入 EXE 文件的名稱,文件名的后面跟兩個數字,例如:MyClient 123 456

六、輸出

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

七、小結:

動態鏈接具有下列優點:

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

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

標簽:天門 德陽 江蘇 新疆 陽泉 張家界 蘭州 白山

巨人網絡通訊聲明:本文標題《asp.net源程序編譯為dll文件并調用的實現過程》,本文關鍵詞  asp.net,源程序,編,譯為,dll,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《asp.net源程序編譯為dll文件并調用的實現過程》相關的同類信息!
  • 本頁收集關于asp.net源程序編譯為dll文件并調用的實現過程的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    精品视频色一区| 欧美日韩中文一区| 久久精品视频在线免费观看| 人人超碰91尤物精品国产| 欧美三区在线观看| 免费看日韩精品| 日韩免费高清视频| 国产九色精品成人porny| 国产亚洲女人久久久久毛片| 成人午夜精品一区二区三区| 中文字幕一区二区三区不卡在线| 97久久精品人人做人人爽 | 国产在线视频精品一区| 久久免费电影网| 99精品国产视频| 亚洲成av人片一区二区梦乃| 日韩你懂的在线播放| 成人综合在线观看| 五月天精品一区二区三区| 欧美成人一区二区三区片免费| 国产精品一级二级三级| 亚洲欧美日韩综合aⅴ视频| 欧美伦理电影网| 大白屁股一区二区视频| 无码av中文一区二区三区桃花岛| 久久综合色综合88| 欧美综合欧美视频| 国产精品自在欧美一区| 一区二区三区国产| 久久婷婷色综合| 欧美亚洲愉拍一区二区| 国产精品一区二区在线看| 亚洲激情男女视频| 国产三级欧美三级| 欧美日韩国产综合一区二区三区 | 大胆亚洲人体视频| 亚洲大片精品永久免费| 日本一区免费视频| 91精品国产综合久久久久久久久久 | 亚洲精品乱码久久久久久| 欧美成人三级电影在线| 99精品偷自拍| 国产一区二区三区免费观看| 亚洲国产精品嫩草影院| 国产女人18毛片水真多成人如厕| 欧美精品日韩一区| 色乱码一区二区三区88| 成人自拍视频在线观看| 国产资源在线一区| 蜜臀精品久久久久久蜜臀| 亚洲图片一区二区| 综合久久久久综合| 国产精品久久久久久福利一牛影视 | 精品欧美一区二区在线观看| 91国内精品野花午夜精品| 国产v综合v亚洲欧| 久久成人18免费观看| 蜜桃视频一区二区三区在线观看| 亚洲色图欧美激情| 日本一区二区三区在线不卡| 精品国产不卡一区二区三区| 555夜色666亚洲国产免| 欧美视频自拍偷拍| 色8久久精品久久久久久蜜| 99久久久久久| 99国内精品久久| 不卡免费追剧大全电视剧网站| 国产精品一区在线观看你懂的| 美女看a上一区| 日韩av午夜在线观看| 亚洲成人动漫av| 午夜精品免费在线观看| 一区二区高清免费观看影视大全| 亚洲人成在线观看一区二区| 自拍偷在线精品自拍偷无码专区| 国产精品美女久久久久久久久| 国产欧美精品日韩区二区麻豆天美| 亚洲精品一区二区三区精华液| 日韩限制级电影在线观看| 91精品婷婷国产综合久久| 欧美一级艳片视频免费观看| 日韩午夜在线影院| 久久久久成人黄色影片| 国产欧美综合色| 国产区在线观看成人精品 | 欧美日韩在线直播| 欧美日韩亚洲国产综合| 欧美理论电影在线| 这里只有精品免费| 亚洲精品一区二区在线观看| 久久久久国产精品麻豆ai换脸 | 日韩免费看的电影| 国产欧美日本一区视频| 国产精品福利在线播放| 亚洲精品国产第一综合99久久| 一区二区三区四区亚洲| 婷婷丁香久久五月婷婷| 美国十次了思思久久精品导航| 国内精品伊人久久久久影院对白| 成人午夜视频网站| 欧美日韩国产高清一区二区 | 国产亚洲va综合人人澡精品| 国产精品你懂的在线| 亚洲色图视频网| 日韩国产欧美在线播放| 9色porny自拍视频一区二区| 日本久久一区二区三区| 欧美一区二区在线不卡| 国产欧美日韩综合精品一区二区| 亚洲欧美区自拍先锋| 日韩精品五月天| 国产成人av网站| 欧美日韩小视频| 国产免费成人在线视频| 亚洲成av人片www| 国产成人综合亚洲91猫咪| 欧美自拍偷拍午夜视频| 久久午夜老司机| 亚洲资源中文字幕| 国精产品一区一区三区mba桃花| 91在线观看免费视频| 欧美一区二区在线观看| 亚洲欧美日韩在线| 九一九一国产精品| 92精品国产成人观看免费| 日韩欧美国产三级电影视频| 亚洲三级小视频| 国内成+人亚洲+欧美+综合在线 | 天堂久久久久va久久久久| 国产成人精品aa毛片| 在线成人av网站| 国产精品久久久久毛片软件| 精品一区二区影视| 欧美日韩大陆一区二区| 亚洲欧美综合另类在线卡通| 激情综合五月天| 欧美日韩激情在线| 日韩毛片视频在线看| 久久69国产一区二区蜜臀| 欧美日韩中文字幕一区二区| 中文字幕亚洲区| 国产成人综合网| 久久久九九九九| 精品一区二区三区免费| 精品日韩一区二区三区| 亚洲成人资源在线| 日本精品裸体写真集在线观看| 国产午夜精品久久| 国产久卡久卡久卡久卡视频精品| 欧美一区二区三区的| 午夜av一区二区| 精品视频在线免费看| 亚洲综合久久久| 91电影在线观看| 亚洲乱码国产乱码精品精可以看 | 国产精品久久久久9999吃药| 国产精品亚洲视频| 久久亚洲一区二区三区四区| 蜜桃一区二区三区在线| 欧美一区三区二区| 日韩中文字幕1| 6080亚洲精品一区二区| 午夜精品影院在线观看| 欧美自拍丝袜亚洲| 亚洲狠狠爱一区二区三区| 91污片在线观看| 国产精品高潮久久久久无| 白白色 亚洲乱淫| 亚洲欧洲韩国日本视频| 99久久er热在这里只有精品15| 国产精品天美传媒| av亚洲精华国产精华精华 | 一区二区三区在线视频观看58| 91免费在线视频观看| 亚洲综合色噜噜狠狠| 欧美日韩亚洲综合| 日本aⅴ亚洲精品中文乱码| 日韩欧美亚洲国产精品字幕久久久| 免费在线一区观看| 久久这里只有精品首页| 成人精品视频一区二区三区尤物| 国产精品乱人伦| 一本大道久久a久久精品综合| 亚洲一二三四久久| 欧美一级片在线| 国产成人午夜电影网| 1区2区3区欧美| 欧美精品在欧美一区二区少妇| 五月天国产精品| 日韩女优毛片在线| av成人老司机| 亚洲v日本v欧美v久久精品| 这里是久久伊人| 丰满岳乱妇一区二区三区| 亚洲精品中文在线影院| 欧美日韩国产电影| 大桥未久av一区二区三区中文| 亚洲综合自拍偷拍| 2024国产精品| 91成人在线精品|