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\NUnitFrameworkdll/>
</references>
<sources>
<includes name=HashtableTestcs/>
</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 生成过程的支持)