国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

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

來源:懂視網 責編:小采 時間:2020-11-27 22:38:52
文檔

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

asp.net源程序編譯為dll文件并調用的實現過程:很多時候,我們需要將.cs文件單獨編譯成.dll文件,這就需要使用csc命令將.cs文件編譯成.dll動態鏈接庫文件。具體的操作步驟如下: 打開命令窗口->輸入cmd到控制臺->cd C:WINDOWSMicrosoft.NETFrameworkv1.1.4322 轉到vs.net安
推薦度:
導讀asp.net源程序編譯為dll文件并調用的實現過程:很多時候,我們需要將.cs文件單獨編譯成.dll文件,這就需要使用csc命令將.cs文件編譯成.dll動態鏈接庫文件。具體的操作步驟如下: 打開命令窗口->輸入cmd到控制臺->cd C:WINDOWSMicrosoft.NETFrameworkv1.1.4322 轉到vs.net安

很多時候,我們需要將.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 模塊。

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

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

asp.net源程序編譯為dll文件并調用的實現過程:很多時候,我們需要將.cs文件單獨編譯成.dll文件,這就需要使用csc命令將.cs文件編譯成.dll動態鏈接庫文件。具體的操作步驟如下: 打開命令窗口->輸入cmd到控制臺->cd C:WINDOWSMicrosoft.NETFrameworkv1.1.4322 轉到vs.net安
推薦度:
標簽: 文件 使用 程序
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 国产欧美日韩在线 | 中文字幕美日韩在线高清 | 一级毛片私人影院免费 | 精品一区二区三区三区 | 欧美视频亚洲色图 | 日本一区二区三区在线播放 | 手机在线观看国产精选免费 | 日韩区在线 | 国产精品1区2区 | 亚洲 欧美 自拍 另类 欧美 | 亚洲欧美久久精品一区 | 色阁阁| 国产精品综合一区二区 | 久久精品国产一区二区三区不卡 | 欧美人与曾 | 国产欧美日韩在线不卡第一页 | 欧美 日韩 国产 色 欧美 日韩 中文 | 欧美国产日韩另类 | 日韩午夜在线视频 | 一级大毛片 | 亚洲国产天堂久久九九九 | 欧美成人高清视频 | 亚洲欧美日本另类 | 久久久影院亚洲精品 | 国产成人精品久久一区二区三区 | 亚洲国产精品二区久久 | 自拍自偷 | 亚洲午夜精品 | 美女网站一区二区三区 | 看一级特黄a大片日本片 | 在线国产日韩 | 自拍偷拍日韩 | 亚洲精品美女久久久aaa | 久久成人国产 | 看一级特黄a大片日本片 | 亚洲国产精品一区二区久 | 日韩在线一区二区三区免费视频 | 一级a毛片免费观看久久精品 | 精品国产高清a毛片无毒不卡 | 欧美日韩a| 成人国产一区二区三区精品 |