使用Nant构建入门
前言:
?
NAnt是一項開源的項目,利用NAnt,你可以方便快捷地對自己.NET項目或解決方案進行自動構(gòu)建。與VS中可視化化極強的項目和解決方案管理相比,NAnt只能命令行的方式操作,但是這并不影響Nant的流行。NAnt可以根據(jù)我們的需要,幫我們自動構(gòu)建項目,比如創(chuàng)建文件夾,移動文件,運行指定的程序等等,這些都是VS無法辦到的。
1U+jM xz^b:NP0范例代碼:/Files/gpcuster/NAntDemo.rar
:@ A-wu!x0
?
正文:
?
如果你的機器上沒有安裝NAnt,請先到http://nant.sourceforge.net下載,并安裝到機器上。
?
由于NAnt是基于命令行的工具,所以,我們第一步需要配置環(huán)境變量:在環(huán)境變量設(shè)置窗口中找到Path目錄,將Nant.exe所在的目錄(如C:"Program Files"nant-0.85"bin)添加進去即可。
?
如果你對配置環(huán)境變量不熟悉,也可以在系統(tǒng)目錄(如C:"Windows)下添加一個nant.bat文件, nant.bat文件的內(nèi)容如下:
@echo off
`5P&cy,x q0"C:\Program Files\nant-0.85\bin\NAnt.exe" %*
?
然后,你打開CMD窗口,輸入nant后可以看到:
?
?
?
然后,我們在D盤的根目錄下新建一個NAnt的構(gòu)建文件,命名為my.build(NAnt的構(gòu)建文件的后綴名是build)
?
雖然NAnt構(gòu)建文件的后綴名不是XML,但是他的文檔格式還是基于XML的,所以改文件的開頭需要注明<?xmlversion="1.0"?>。在下面我們再加入其他的元素,整個文件的內(nèi)容如下:
?
<?xmlversion="1.0"?>
?
<projectname="Aaron.Guo.NAnt.Project"default="show"basedir=".">
?
<targetname="show">
?
??? <echomessage="Hello NAnt"/>
?
</target>
?
</project>
?
保存以后,我們在CMD窗口中來運行這個構(gòu)建文件,如下圖所示:
?
?
?
我們用-buildfile:來指定需要構(gòu)建的文件的地址(D:"my.build)。可以看到,這個文件就是顯示了一個字符串:Hello NAnt。
?
下面,我們來看看這個文件中的3個重要標志:
?
1.? project表示構(gòu)建文件的項目,每個構(gòu)建文件有且盡有一個項目,他包括一系列的target,name="Aaron.Guo.NAnt.Project"說明項目名稱是Aaron.Guo.NAnt.Project,這是可選的default="show "表示項目的默認目的(target)是show,basedir="."表示基準目錄為當前目錄。
?
2.? target表示一個目的,他包括一系列的task,name="show"指定目的的名稱,這個是必選的。
?
3.? echo是一個任務(wù)(task)他用來顯示一個特定的字符串,message="Hello NAnt"表示要顯示的字符串為Hello NAnt。
?
下面,我們用這個構(gòu)建文件來編譯生成一個簡單的CS文件。
?
對my.build文件修改后的內(nèi)容如下:
?
<?xmlversion="1.0"?>
?
<projectname="Aaron.Guo.Second.Project"default="show"basedir=".">
?
?
<propertyname="basename"value="HelloNAnt"/>
?
<propertyname="debug"value="true"/>
?
?
<!--顯示消息-->
?
<targetname="show">
?
??? <echomessage="Hello NAnt"/>
?
</target>
?
<!--編譯文件-->
?
<targetname="build">
?
??? <mkdirdir="${basename}/bin"/>
?
??? <csctarget="exe"output="${basename}/bin/${basename}-cs.exe"debug="${debug}">
?
???? ?<sources>
?
??????? <includename="${basename}/${basename}.cs"/>
?
????? </sources>
?
??? </csc>
?
</target>
?
<!--運行文件,run基于build-->
?
<targetname="run"depends="build">
?
??? <execprogram="${basename}/bin/${basename}-cs.exe"basedir="."/>
?
</target>
?
?
</project>
?
然后D盤根目錄下新建一個HelloNant文件夾,并在里面添加一個HelloNant.cs文件,該文件的內(nèi)容如下:
?
namespaceAaron.Guo.Second.Project
?
{
?
?? publicclassHelloNAntCS
?
??? {
?
?????? staticvoidMain()
?
??????? {
?
??????????? System.Console.WriteLine("Hello NAnt using C#");
?
??????? }
?
??? }
?
}
?
好,我們在CMD窗口中運行nant –buildfile:D:"my.build
?
可以看見,顯示的東西還是和上次一樣,而且CS文件也沒有被編譯也沒有被運行。
?
?
原因是這個項目默認的target是show,所以編譯和運行的target都沒有執(zhí)行。因此,我們需要顯示的指定相應(yīng)執(zhí)行的target。
?
下面,為了執(zhí)行build,我們輸入nant –buildfile:D:"my.build build 執(zhí)行的輸出如下圖所示:
?
?
并且我們可以在D:\HelloNAnt\bin中找到生成的可執(zhí)行文件HelloNAnt-cs.exe
?
?
然后,我們再來輸入nant –buildfile:D:\my.build run結(jié)果如下:
?
?
如果我們希望先顯示消息,在運行程序,可以執(zhí)行一下的命令:nant –buildfile:D:\my.build show run 結(jié)果如下:
?
?
現(xiàn)在,相信大家已經(jīng)對NAnt的使用有了一定的了解了。
?
后記:
?
相信在不久的將來,NAnt也會擁有漂亮方便的圖形界面操作方式,功能也將越來越完善。
?
?
nant
nant不像目前版本的visual studio .net,他是個基于.net的編譯(build)工具,能夠使項目的編譯過程非常容易。當項目研發(fā)者非常多時,不可能依靠某個人去執(zhí)行編譯過程,你也不想經(jīng)常去手工編譯項目,而是代之以創(chuàng)建一個每天晚上自動運行的編譯過程。nant允許你執(zhí)行編譯解決方案、復(fù)制文件、運行nunit測試、發(fā)送e-mail等工作。遺憾的是,nant沒有漂亮的圖像化界面,但他包括一個控制臺應(yīng)用程式和xml文件,xml文件指定了編譯過程中應(yīng)當完成的任務(wù)。注意visual studio 2005新的編譯平臺msbuild,他提供非常穩(wěn)健的編譯功能并且同樣是由基于xml的項目文件驅(qū)動的。
使用nant
在這個例子中,我將為前面創(chuàng)建的nunitexample解決方案創(chuàng)建一個nant編譯文件。首先創(chuàng)建一個以.build 為擴展名的xml文件,將他置于項目的根目錄下,然后在文件頂部添加一個xml聲明。第一個添加的標記是項目標記:
the nunit example project
項目標記設(shè)置了項目名稱、缺省目標和基目錄。描述標記設(shè)置了該項目的簡要描述。
接下來是添加屬性標記,用于存儲可從文件所有地方訪問的設(shè)置值。在本例中,我要創(chuàng)建一個名為debug的屬性,他能設(shè)置為true或false,用于決定項目是否在調(diào)試時被編譯(這個特別的屬性最后實際上不影響項目的編譯,他是你設(shè)置的一個簡單變量,能在實際決定怎么編譯項目后讀取。)屬性標記如下:
然后,創(chuàng)建一個目標標記。一個項目能包含多個標記,他們在nant運行時指定。如果沒有指定目標,則使用項目元素中缺省的設(shè)置值。在本例中,缺省目標是“build”。讓我們看一看目標元素,他包含大部分編譯信息:
在目標元素中,我設(shè)置了要編譯的目標名并創(chuàng)建一個任務(wù)描述。下面還要創(chuàng)建一個csc元素,他指定應(yīng)當傳遞給c#編譯器csc的內(nèi)容。讓我們看一看csc元素:
debug="${debug}">
首先,必須設(shè)置csc元素的目標。在本例中我將創(chuàng)建一個.dll文件,因此我將目標設(shè)置為“l(fā)ibrary”。接下來設(shè)置csc元素的輸出,他指定.dll文件的創(chuàng)建位置。最后,需要設(shè)置debug屬性,他決定項目是否在調(diào)試時被編譯。因為前面已創(chuàng)建了一個屬性來存儲這個值,所以能使用下列字符串來訪問該屬性的值:${debug}。csc元素還包含一些子元素,這里需要創(chuàng)建兩個元素:引用元素告知nant需要為這個項目引用的程式集,源文件元素告訴nant編譯所包括的文件。在本例中,我引用nunit.framework.dll程式集并包括hashtabletest.cs文件。最終的編譯文件見圖8。(正常情況下你還應(yīng)當創(chuàng)建一個用于刪除生成的文件的clean目標,但我為了文章簡短而省略了。)
圖8 nant編譯文件
要編譯這個文件,需要在.build文件所在的項目根目錄下執(zhí)行nant.exe。如果編譯成功,應(yīng)用程式的bin目錄下能找到.dll和.pdb文件。盡管使用nant確實不如在visual studio中點擊“build”那么容易,但對于研發(fā)按進度自動運行的編譯過程,他是個功能非常強大的工具。nant還包括一些有用的功能,例如,運行單元測試或復(fù)制其他文件(目前的visual studio編譯過程不支持這些功能)。
轉(zhuǎn)載于:https://www.cnblogs.com/zhangzt/archive/2010/09/16/1828196.html
總結(jié)
以上是生活随笔為你收集整理的使用Nant构建入门的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 灾备还缺一套评价体系
- 下一篇: Android 反射获取内外置存储卡方法