天天看點

NAnt

NAnt

NAnt 是一個基于 .NET 的生成工具,與目前版本的 Visual Studio .NET 不同,它使得為您的項目建立生成過程變得非常容易。當您擁有大量從事單個項目的開發人員時,您不能依賴于從單個使用者的座位進行生成。您也不希望必須定期手 動生成該項目。您更願意建立每天晚上運作的自動生成過程。NAnt 使您可以生成解決方案、複制檔案、運作 NUnit 測試、發送電子郵件,等等。遺憾的是,NAnt 缺少漂亮的圖形界面,但它的确具有可以指定應該在生成過程中完成哪些任務的控制台應用程式和 XML 檔案。注意,MSBuild(屬于 Visual Studio 2005 的新的生成平台)為每種健壯的生成方案進行了準備,并且由基于 XML 的項目檔案以類似的方式驅動。

實際運作的 NAnt

在該 示例中,我将為前面建立的 NUnitExample 解決方案建立一個 NAnt 版本檔案。首先,我需要建立一個具有 .build 擴充名的 XML 檔案,将其放在我的項目的根目錄中,然後向該檔案的頂部添加一個 XML 聲明。我需要添加到該檔案的第一個标記是 project 标記:

NAnt
xml version="1.0"?>
NAnt
<project name="NUnit Example" default="build" basedir=".">
NAnt
    <description>The NUnit Example Projectdescription>
NAnt
project>

項目标記還用于設定項目名稱、預設目标以及基目錄。Description 标記用于設定該項目的簡短說明。

接 下來,我将添加 property 标記,該标記可用于将設定存儲到單個位置(随後可以從檔案中的任意位置通路該位置)。在該例中,我将建立一個名為 debug 的屬性,我可以随後将其設定為 true 或 false,以反映我是否要在調試配置下編譯該項目。(最後,這一特定屬性并未真正影響如何生成該項目;它隻是您設定的一個變量,當您真正确定了如何生成 該項目時将讀取該變量。)

接下來,我需要建立一個 target 标記。一個項目可以包含多個可在 NAnt 運作時指定的 target。如果未指定 target,則使用預設 target(我在 project 元素中設定的 target)。在該示例中,預設 target 是 build。讓我們觀察一下 target 元素,它将包含大多數生成資訊:

NAnt
< target name ="build" description ="compiles the source code" >
NAnt
target> 在 target 元素内,我将把 target 的名稱設定為 build,并且建立有關該 target 将做哪些工作的說明。我還将建立一個 csc 元素,該元素用于指定應該傳遞給 csc C# 編譯器的資料。讓我們看一下該 csc 元素:
NAnt
< csc target ="library" output =". indebugNUnitExample.dll"
NAnt
     debug ="${debug}" >
NAnt
< references >
NAnt
     < includes name ="C:program filesNUnit V2.1 inNUnit.Framework.dll" />
NAnt
references>
NAnt
    <sources>
NAnt
       <includes name="HashtableTest.cs"/>
NAnt
    sources>
NAnt
csc>

首 先,我必須設定該 csc 元素的 target。在該例中,我将建立一個 .dll 檔案,是以我将 target 設定為 library。接下來,我必須設定 csc 元素的 output,它是将要建立 .dll 檔案的位置。最後,我需要設定 debug 屬性,它确定了是否在調試中編譯該項目。因為我在前面建立了一個用于存儲該值的屬性,是以我可以使用下面的字元串來通路該屬性的值:${debug}。 Csc 元素還包含一些子元素。我需要建立兩個元素:references 元素将告訴 NAnt 需要為該項目引用哪些程式集,sources 元素告訴 NAnt 要在生成過程中包含哪些檔案。在該示例中,我引用了 NUnit.Framework.dll 程式集并包含了 HashtableTest.cs 檔案。下面的代碼塊中顯示了完整的生成檔案。(您通常還要建立一個幹淨的 target,用于删除生成的檔案,但為了簡潔起見,我已經将其省略。)

NAnt

xml version="1.0"?>

NAnt

<project name="NUnit Example" default="build" basedir=".">

NAnt

    <description>The NUnit Example Projectdescription>

NAnt

    <property name="debug" value="true"/>

NAnt

    <target name="build" description="compiles the source code">

NAnt

        <csc target="library" output=". indebugNUnitExample.dll"

NAnt

                 debug="${debug}">

NAnt

            <references>

NAnt

                <includes name="C:program filesNUnit

NAnt

              V2.1 inNUnit.Framework.dll" />

NAnt

            references>

NAnt

            <sources>

NAnt

                <includes name="HashtableTest.cs"/>

NAnt

            sources>

NAnt

        csc>

NAnt

    target>

NAnt

project>

要 生成該檔案,我需要轉到我的項目的根目錄(生成檔案位于此處),然後從該位置執行 nant.exe。如果生成成功,您可以在該應用程式的 bin 目錄中找到 .dll 和 .pdb 檔案。盡管使用 NAnt 肯定不像在 Visual Studio 中單擊 Build 那樣簡單,但它仍然是一種非常強大的工具,可用于開發按自動計劃運作的生成過程。NAnt 還包括一些有用的功能,例如能夠運作單元測試或者複制附加檔案(這些功能沒有受到目前 Visual Studio 生成過程的支援)。

NAnt 是一個開放源代碼項目,并且可以從 http://nant.sourceforge.net 下載下傳。