NAnt 是一個基於 NET 的生成工具與當前版本的 Visual Studio NET 不同它使得為你的項目創建生成過程變得非常容易當你擁有大量從事單個項目的開發人員時你不能依賴於從單個用戶的座位進行生成你也不希望必須定期手動生成該項目你更願意創建每天晚上運行的自動生成過程NAnt 使你可以生成解決方案復制文件運行 NUnit 測試發送電子郵件等等遺憾的是NAnt 缺少漂亮的圖形界面但它的確具有可以指定應該在生成過程中完成哪些任務的控制台應用程序和 XML 文件注意MSBuild(屬於 Visual Studio 的新的生成平台)為每種健壯的生成方案進行了准備並且由基於 XML 的項目文件以類似的方式驅動
實際運行的 NAnt
在該示例中我將為前面創建的 NUnitExample 解決方案創建一個 NAnt 版本文件首先我需要創建一個具有 build 擴展名的 XML 文件將其放在我的項目的根目錄中然後向該文件的頂部添加一個 XML 聲明我需要添加到該文件的第一個標記是 project 標記
<?xml version=
?>
<project name=
NUnit Example
default=
build
basedir=
>
<description>The NUnit Example Project</description>
</project>
項目標記還用於設置項目名稱默認目標以及基目錄Description 標記用於設置該項目的簡短說明
接著我將添加 property 標記該標記可用於將設置存儲到單個位置(隨後可以從文件中的任意位置訪問該位置)在該例中我將創建一個名為 debug 的屬性我可以隨後將其設置為 true 或 false以反映我是否要在調試配置下編譯該項目(最後這一特定屬性並未真正影響如何生成該項目它只是你設置的一個變量當你真正確定了如何生成該項目時將讀取該變量)
接下來我需要創建一個 target 標記一個項目可以包含多個可在 NAnt 運行時指定的 target如果未指定 target則使用默認 target(我在 project 元素中設置的 target)在該示例中默認 target 是 build讓我們觀察一下 target 元素它將包含大多數生成信息
<target name=
build
description=
compiles the source code
>
</target>
在 target 元素內我將把 target 的名稱設置為 build並且創建有關該 target 將做哪些工作的說明我還將創建一個 csc 元素該元素用於指定應該傳遞給 csc C# 編譯器的數據讓我們看一下該 csc 元素
<csc target=
library
utput=
\bin\debug\NUnitExample
dll
debug=
${debug}
>
<references>
<includes name=
C:\program files\NUnit V
\bin\NUnit
Framework
dll
/>
</references>
<sources>
<includes name=
HashtableTest
cs
/>
</sources>
</csc>
首先我必須設置該 csc 元素的 target在該例中我將創建一個 dll 文件因此我將 target 設置為 library接下來我必須設置 csc 元素的 output它是將要創建 dll 文件的位置最後我需要設置 debug 屬性它確定了是否在調試中編譯該項目因為我在前面創建了一個用於存儲該值的屬性所以我可以使用下面的字符串來訪問該屬性的值${debug}Csc 元素還包含一些子元素我需要創建兩個元素references 元素將告訴 NAnt 需要為該項目引用哪些程序集sources 元素告訴 NAnt 要在生成過程中包含哪些文件在該示例中我引用了 NUnitFrameworkdll 程序集並包含了 HashtableTestcs 文件Figure 中顯示了完整的生成文件(你通常還要創建一個干淨的 target用於刪除生成的文件但為了簡潔起見我已經將其省略)
要生成該文件我需要轉到我的項目的根目錄(生成文件位於此處)然後從該位置執行 nantexe如果生成成功你可以在該應用程序的 bin 目錄中找到 dll 和 pdb 文件盡管使用 NAnt 肯定不像在 Visual Studio 中單擊 Build 那樣簡單但它仍然是一種非常強大的工具可用於開發按自動計劃運行的生成過程NAnt 還包括一些有用的功能例如能夠運行單元測試或者復制附加文件(這些功能沒有受到當前 Visual Studio 生成過程的支持)
From:http://tw.wingwit.com/Article/program/net/201311/15339.html