C#編譯過(guò)程的兩大特點(diǎn)
C#編譯過(guò)程開(kāi)始前要安裝好.NET Framwork SDK環(huán)境,一般安裝了vs.net工具的 都已經(jīng)可以了,我們這里使用vs2005:在圖中 可以看到我們進(jìn)入vs2005的命令行窗體
首先,我們用文本文件建一個(gè).cs的文件 其實(shí)在C#編譯過(guò)程中這個(gè)擴(kuò)展名是可以自己定的,另不用.cs也是可以的,建一個(gè)文件命名為:SimpleProgram.cs 輸入下面的代碼
- usingSystem;
- publicclassSimpleProgram
- {
- staticvoidMain()
- {
- Console.WriteLine(“Hello”);
- Console.ReadLine();
- }
- }
保存,注意一下大小寫(xiě),然后在命令行窗口里輸入:csc SimpleProgram.cs,當(dāng)然我們要首先進(jìn)入文件所在目錄 如果編譯通過(guò),在同一個(gè)文件夾里會(huì)出現(xiàn)一個(gè)SimpleProgram.exe,運(yùn)行 就可以看到一個(gè)控制臺(tái)程序 打印出Hello.
接著我們講編譯多個(gè)源文件
編譯多個(gè)源文件有幾種方面:1.把所有的源文件編譯成一個(gè)exe文件 2.把一些文件編譯成dll,一些編譯成exe 然后作為一個(gè)應(yīng)用程序一起使用。
先說(shuō)***個(gè)方法:做兩個(gè).cs文件
Program2.cs
- usingSystem
- publicclassProgram2
- {
- staticvoidMain()
- {
- Personp=newPerson(“dotLive”);
- Console.WriteLine(“Ourperson’
- snameis“+p.Name);
- }
- }
Person.cs
- usingSystem;
- publicclassPerson
- {
- privatestringname;
- publicPerson(strings)
- {
- name=s;
- }
- publicstringName
- {
- get{
- returnname;
- }
- set
- {
- name=value;
- }
- }
- }
保存,命令行窗口中進(jìn)入文件目錄 輸入:csc Program2.cs Person.cs 這個(gè)時(shí)候會(huì)在目錄里生成一個(gè)exe文件,文件的名稱跟***個(gè).cs的文件名相同,如果.cs文件很多的話 還有一個(gè)簡(jiǎn)單的寫(xiě)法:csc *.cs 就可以把當(dāng)前目錄里的所有.cs文件進(jìn)行編譯。
現(xiàn)在說(shuō)一下第二種方法,還是使用上面兩個(gè).cs文件
首先輸入 csc /t:library Person.cs命令 這時(shí)候會(huì)生成一個(gè)Person.dll文件,然后第二步輸入命令 csc Program2.cs /r:Person.dll 這樣就可以生成一個(gè)引用Person.dll的exe文件Program2.exe文件。
這里出現(xiàn)了兩個(gè)參數(shù) /t 和 /r
/t 是指定編譯生成dll還是exe,在***種方法中的命令csc *.cs 其實(shí)是一個(gè)簡(jiǎn)寫(xiě),完整的寫(xiě)法是csc /t:exe *.cs,由于/t:exe是默認(rèn)的選項(xiàng)可以不寫(xiě), 還要說(shuō)一句 這里的exe文件都是控制臺(tái)應(yīng)用程序(其他的以后再說(shuō))
/r 的作用可以看成是引用了一個(gè)dll文件,格式可以寫(xiě)成csc program.cs /r:1.dll;2.dll;3.dll
掛接多個(gè)dll,每個(gè)dll之間用分號(hào) 隔開(kāi)。
接著我們?cè)僦v一個(gè)參數(shù) /out 這個(gè)是給可執(zhí)行文件命名的 比如:csc /out:MyApp.exe Program2.cs Person.cs 這樣就可以生成一個(gè)叫做MyApp.exe的可執(zhí)行文件。
在C#編譯過(guò)程中如果有多個(gè).cs文件中存在Main函數(shù) 要怎么辦?
首先我們?cè)赑erson.cs文件的Person類(lèi)里添加一個(gè)Main函數(shù)
- usingSystem;
- publicclassPerson
- {
- privatestringname;
- publicPerson(strings)
- {
- name=s;
- }
- publicstringName
- {
- get{
- returnname;
- }
- set
- {
- name=value;
- }
- }
- //新增加一個(gè)Main函數(shù)
- staticvoidMain()
- {
- Personp=newPerson(“dotLive2”);
- Console.WriteLine(“Ourperson’
- snameis“+p.Name);
- }
- }
這樣一來(lái)如果按照原來(lái)的方法同時(shí)將兩個(gè)文件編譯進(jìn)同一個(gè)exe時(shí),便以一定會(huì)出錯(cuò)
這時(shí)候我們?cè)僖胍粋€(gè)新的參數(shù) /main
在我們自己決定要使用哪個(gè)cs文件里的Main函數(shù)時(shí) 可以輸入命令
csc Program2.cs Person.cs /main Program2
就是制定了以Program2里的Main函數(shù)為程序入口點(diǎn)了。
【編輯推薦】