第二章 構建C#應用程式
構建.NET應用程式有許多工具可以選擇,從簡單的c#命令列編輯器CSC.EXE與記事本的配合使用,到輕量級編輯器(textpad和notepad++),另外開源的IDE開發工具sharpdevelop,再到微軟的商用.NET開發工具,VISUAL STUDIO 2008等。
2.1 CSC命令列編譯器
對於許多程式員來說,一開始就使用VS.NET作為開發平台,沒有或很少利用命令列編譯器,其實,所有的開發平台,最終都是要調用命令列編譯器的,只不過這一過程對使用者來說是透明的,然而,理解命令列編譯方式,對於一個進階為進階程式員來說,是必不可少的!
C#語言使用csc.exe,vb.NET用vbc.exe進行編譯,這裡只以csc為例。
在命令列編譯器中,支援標誌的所寫,如 csc /out 和csc/t 是一個意思。另外,訪問標誌或選項,可以用“-”或者“/” 。
為了編譯一個原始碼(用記事本編輯即可),需要用CSC命令。
一般需要兩類參數:
輸入當然就是需要編譯的源檔案名稱啦,比如*.CS。若有多個檔案需要編譯,則一個個列出來即可,若編譯所有*.CS,只需用萬用字元即可,如csc *.cs
輸出參數就是需要編譯為什麼檔案,可選的是exe和dll或模組。可以查看具體參數。
這裡要說明的是,dll是動態連結程式庫,不可以直接運行,必須寄宿到其他可執行程式中運行。
exe檔案時可以直接啟動並執行。dll可以寄宿到exe中。區別在於exe檔案要有進入點哦。
預設的是exe檔案,但是如果沒有進入點,將提示出錯。有進入點的原始碼可以編譯為dll或者exe。
在將多個原始碼編譯時間,如csc *.cs,則會編譯為一個檔案(可選的dll或者exe)。
也就是編譯的原始碼如果引用了其他程式集中的類,則需要加入引用選項,從而讓編譯器知道如何去找到程式集,加以引用,這相當於IDE中使用項目-引用中的程式集。
包括了引用單個和多個程式集(分號隔開)。
另外,為了減輕錄入負擔,也可以自己建立一個回應檔(*.rsp),這裡記錄了編譯期間要用到的所有指令。系統也提供了一個預設回應檔(c#的預設csc.rsp),裡面是一些常用的引用程式集,當用csc編譯時間,這個檔案自動被引用。
註:回應檔具有累加性,後面被載入的回應檔若與前面的衝突,將會覆蓋相應的代碼。
註:引用了沒有使用的程式集,編譯器將忽略它,因此沒必要擔心引用過多沒有的程式集影響效能,當然,作為規範,沒必要引用沒有使用的程式集。(所以可以理解引用了許多無用的程式集和using了許多命名空間,不影響效能)
2.2 其它編譯器
為了提高開發和編譯的工作效率,提供了許多開發平台,他們實質上還是利用命令列編譯器進行後台工作的,只是無需開發人員手動完成,形成了自動化工作流程。
如textpad(收費,但是可以無限制使用),notepad++(免費),sharpdevelop(免費),visual c# express(速成版,免費),visual studio 2008(商業版,收費),這裡具體使用就不再多說了。主要說說vs2008的一些實用功能:
(1)目前的2008版本支援建立項目時選擇架構的版本(2.0/3.0/3.5),這個功能不錯,終於不需要在一台機子上裝vs的多個開發平台了。
(2)2008提供了一個重構功能,這個功能非常的實用,可以改善現有代碼,將之前許多手工勞動自動化了。
(3)代碼擴充和圍繞技術。提供了插入預製的c#代碼塊的能力,可用的代碼擴充數量是驚人的!
(4)可視化的類別設計工具(express中沒有這個功能)。建立一個類圖檔案之後,就可以利用工具箱中的工具,拖放各種類、介面等類型,並增加刪除成員,表示各種類型的關係(繼承等),配合實用class details視窗和class designer toolbox,加快了設計速度。
(5)對象測試平台。提供了可視工具(OTB,對象測試平台),可以快速建立一個類的執行個體並調用其成員,無需運行整個程式(個人覺得這個功能非常實用,好像只有Team版的VS才有)。如果需要測試一個具體方法而不想逐行執行其他無關的代碼,這個很有用。你總不期望為了測試一個相對獨立的模組,而讓這個程式編譯好幾十秒吧,深受其害啊!
目前從書中看,這一操作只需要一步,直接在類別檢視下的OTB中中右擊這個類執行個體,選擇-調用方法,然後選擇某個方法,即可執行。實際上,之前還需要一步,才能出現OTB視窗,就是在類別檢視中右擊,選擇建立執行個體,然後輸入一個執行個體名字,這樣,下面才會出現OTB視窗,才能調用方法。如所示: