10個必備的.NET開發小工具(8):NAnt
發表時間:2023-08-12 來源:明輝站整理相關軟件相關文章人氣:
[摘要]NAnt NAnt不像目前版本的Visual Studio .NET,它是一個基于.NET的編譯(Build)工具,能夠使項目的編譯過程非常容易。當項目開發者很多時,不可能依靠某個人去執行編譯過程,...
NAnt
NAnt不像目前版本的Visual Studio .NET,它是一個基于.NET的編譯(Build)工具,能夠使項目的編譯過程非常容易。當項目開發者很多時,不可能依靠某個人去執行編譯過程,你也不想經常去手工編譯項目,而是代之以創建一個每天晚上自動運行的編譯過程。NAnt允許你執行編譯解決方案、復制文件、運行NUnit測試、發送e-mail等工作。遺憾的是,Nant沒有漂亮的圖形化界面,但它包括一個控制臺應用程序和XML文件,XML文件指定了編譯過程中應當完成的任務。注意Visual Studio 2005新的編譯平臺MSBuild,它提供非常穩健的編譯功能并且同樣是由基于XML的項目文件驅動的。
使用NAnt
在這個例子中,我將為前面創建的NUnitExample解決方案創建一個NAnt編譯文件。首先創建一個以.build 為擴展名的XML文件,將它置于項目的根目錄下,然后在文件頂部添加一個XML聲明。第一個添加的標記是項目標記:
The NUnit Example Project
項目標記設置了項目名稱、缺省目標和基目錄。描述標記設置了該項目的簡要描述。
接下來是添加屬性標記,用于存儲可從文件任何地方訪問的設置值。在本例中,我要創建一個名為debug的屬性,它可以設置為true或false,用于決定項目是否在調試時被編譯(這個特殊的屬性最后實際上不影響項目的編譯,它是你設置的一個簡單變量,可以在實際決定如何編譯項目后讀取。)屬性標記如下:
然后,創建一個目標標記。一個項目可以包含多個標記,它們在NAnt運行時指定。如果沒有指定目標,則使用項目元素中缺省的設置值。在本例中,缺省目標是“build”。讓我們看一看目標元素,它包含大部分編譯信息:
在目標元素中,我設置了要編譯的目標名并創建一個任務描述。下面還要創建一個csc元素,它指定應當傳遞給C#編譯器csc的內容。讓我們看一看csc元素:
debug="${debug}">
首先,必須設置csc元素的目標。在本例中我將創建一個.dll文件,因此我將目標設置為“library”。接下來設置csc元素的輸出,它指定.dll文件的創建位置。最后,需要設置debug屬性,它決定項目是否在調試時被編譯。因為前面已經創建了一個屬性來存儲這個值,所以可以使用下列字符串來訪問該屬性的值:${debug}。csc元素還包含一些子元素,這里需要創建兩個元素:引用元素告知NAnt需要為這個項目引用的程序集,源文件元素告訴NAnt編譯所包括的文件。在本例中,我引用NUnit.Framework.dll程序集并包括HashtableTest.cs文件。最終的編譯文件見圖8。(正常情況下你還應當創建一個用于刪除生成的文件的clean目標,但我為了文章簡短而省略了。)
圖8 NAnt編譯文件
要編譯這個文件,需要在.build文件所在的項目根目錄下執行NAnt.exe。如果編譯成功,應用程序的bin目錄下可以找到.dll和.pdb文件。盡管使用NAnt確實不如在Visual Studio中點擊“Build”那么容易,但對于開發按進度自動運行的編譯過程,它是一個功能非常強大的工具。NAnt還包括一些有用的功能,例如,運行單元測試或復制其它文件(目前的Visual Studio編譯過程不支持這些功能)。