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