婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 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蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    韩国理伦片一区二区三区在线播放 | 欧美变态tickle挠乳网站| 欧美中文字幕一区二区三区亚洲| 欧美色精品在线视频| 国产日韩欧美麻豆| 日韩精品免费专区| 91久久精品国产91性色tv| 久久五月婷婷丁香社区| 午夜婷婷国产麻豆精品| 色综合久久88色综合天天6 | 日本一区二区三区久久久久久久久不 | 成人三级在线视频| 欧美一区二区大片| 日本成人在线网站| 在线综合亚洲欧美在线视频| 国产精品久久久久久户外露出 | 91在线视频观看| 中文字幕亚洲一区二区av在线 | 午夜视频一区二区三区| 成人午夜看片网址| 伊人婷婷欧美激情| 91在线一区二区三区| 久久欧美一区二区| 国产91综合网| 亚洲黄网站在线观看| 欧美日韩精品一区二区天天拍小说| 亚洲乱码国产乱码精品精小说| www.成人网.com| 亚洲国产日韩一区二区| 欧美国产激情二区三区| 欧美精品在线观看一区二区| 色网站国产精品| 国产精品99久久久久久久女警| 国产精品电影院| 久久日一线二线三线suv| 91在线码无精品| 亚洲久草在线视频| 亚洲综合视频在线| 国产真实乱子伦精品视频| 99久久精品国产导航| 成人免费的视频| 亚洲国产精品久久不卡毛片| 欧美一区二区三区在线电影 | 亚洲男人天堂av网| 久久综合国产精品| 欧美午夜一区二区三区免费大片| 亚洲乱码国产乱码精品精98午夜| 日韩精品一区二区在线| 91美女片黄在线观看| 亚洲一区在线视频| 精品欧美一区二区三区精品久久| 欧美性xxxxx极品少妇| 99久久久久久| 91论坛在线播放| 色综合激情久久| 色婷婷久久综合| 99re6这里只有精品视频在线观看| 麻豆91精品视频| 美女尤物国产一区| 久久 天天综合| 国产成人精品免费一区二区| 国产精品综合久久| 成人白浆超碰人人人人| 色拍拍在线精品视频8848| 色综合色综合色综合色综合色综合 | 亚洲男人天堂av| 亚洲一区二三区| 久久精品国产成人一区二区三区 | 国产三级欧美三级日产三级99| 欧美美女一区二区在线观看| 欧美成人bangbros| 精品国产成人在线影院 | 成人av在线播放网址| 欧美精品自拍偷拍| 国产亚洲欧美日韩日本| 亚洲精品成人少妇| 亚洲高清一区二区三区| 黄色日韩三级电影| 欧美三级韩国三级日本一级| 久久久久久久网| 男男视频亚洲欧美| 欧美午夜影院一区| 欧美日韩国产高清一区二区| 中文字幕不卡三区| 成人深夜在线观看| 国产欧美一区二区精品性色超碰 | 欧美一区二区视频网站| 同产精品九九九| 欧美一区二区免费观在线| 日本特黄久久久高潮| 欧美videos中文字幕| 亚洲综合小说图片| 69堂国产成人免费视频| 另类小说图片综合网| 久久精品人人做人人爽人人| 成人免费不卡视频| 亚洲美女一区二区三区| 丁香激情综合国产| 中文字幕一区视频| 精品一区二区三区视频在线观看| 欧美日韩一区二区三区四区五区| 国产欧美一区二区精品久导航 | 成人激情av网| 久久精品av麻豆的观看方式| 欧美午夜宅男影院| 日韩精品电影在线| 欧美群妇大交群中文字幕| 亚洲卡通动漫在线| 91丨九色丨黑人外教| 一区二区在线观看av| 视频一区欧美日韩| 日韩视频一区二区三区在线播放| 国产一区二区三区日韩| 91精品国产一区二区三区蜜臀 | 日本在线不卡视频| 欧美在线观看你懂的| 亚洲成人在线免费| 精品1区2区在线观看| 国产成人亚洲精品狼色在线| 国产精品青草综合久久久久99| 成人h精品动漫一区二区三区| 亚洲精品中文在线观看| 欧美成人精品福利| 欧美男人的天堂一二区| 日韩avvvv在线播放| 国产精品亲子伦对白| 欧美色图激情小说| 99re成人在线| 国产成人aaa| 国模一区二区三区白浆| 香港成人在线视频| 久久伊99综合婷婷久久伊| 在线视频综合导航| 国产精品99久久久久| 美腿丝袜一区二区三区| 欧美aaaaaa午夜精品| 久久综合九色综合久久久精品综合| 成人自拍视频在线| 高清国产一区二区| 国产99久久久久| 免费成人在线影院| 韩国成人在线视频| 国产在线看一区| 国产一区二区三区在线观看免费视频 | 国产综合色产在线精品| 91精品黄色片免费大全| 亚洲精品在线观看网站| 日韩一区中文字幕| 国内成人精品2018免费看| xf在线a精品一区二区视频网站| 国产三级精品在线| 日韩一区二区精品在线观看| 亚洲成人一区二区| 这里是久久伊人| 午夜私人影院久久久久| 成人黄色在线看| 日本少妇一区二区| 久久69国产一区二区蜜臀| 久久99精品国产麻豆不卡| 国产精品99精品久久免费| 91欧美激情一区二区三区成人| av中文字幕在线不卡| 日本韩国欧美国产| xf在线a精品一区二区视频网站| 国产亚洲成av人在线观看导航| 久久久久久久久久久久电影| 亚洲最新视频在线播放| 91色综合久久久久婷婷| 色欧美日韩亚洲| 久久久久99精品国产片| 一区二区三区精品视频| 国产精品美女www爽爽爽| 日韩欧美卡一卡二| 国产精品素人视频| 国产麻豆精品久久一二三| 91精品国产综合久久久蜜臀粉嫩| 国产精品人妖ts系列视频| 免费成人结看片| 884aa四虎影成人精品一区| 日韩欧美精品在线| 日本不卡高清视频| 欧美一区日本一区韩国一区| 亚洲主播在线播放| 在线观看www91| 亚洲一区二区美女| 色综合久久天天综合网| 国产精品国产自产拍高清av王其 | 国产成人鲁色资源国产91色综| 欧美大片一区二区| 盗摄精品av一区二区三区| 中文字幕在线免费不卡| 成人av手机在线观看| 国产欧美一区二区精品秋霞影院| 国产成人免费视| 亚洲人成在线观看一区二区| 欧美日本在线看| 国内精品写真在线观看| 一区二区三区在线观看欧美| 91精品国产色综合久久不卡电影| 国产精品自拍av|