前言:

NAnt是一项开源的项目,利用NAnt,你可以方便快捷地对自己.NET项目或解决方案进行自动构建。与VS中可视化化极强的项目和解决方案管理相比,NAnt只能命令行的方式操作,但是这并不影响Nant的流行。NAnt可以根据我们的需要,帮我们自动构建项目,比如创建文件夹,移动文件,运行指定的程序等等,这些都是VS无法办到的。

1U+jM xz^b:NP0范例代码:/Files/gpcuster/NAntDemo.rar

:@ A-wu!x0

正文:

如果你的机器上没有安装NAnt,请先到http://nant.sourceforge.net下载,并安装到机器上。

由于NAnt是基于命令行的工具,所以,我们第一步需要配置环境变量:在环境变量设置窗口中找到Path目录,将Nant.exe所在的目录(如C:"Program Files"nant-0.85"bin)添加进去即可。

如果你对配置环境变量不熟悉,也可以在系统目录(如C:"Windows)下添加一个nant.bat文件, nant.bat文件的内容如下:

@echo off

`5P&cy,x q0"C:\Program Files\nant-0.85\bin\NAnt.exe" %*

然后,你打开CMD窗口,输入nant后可以看到:

然后,我们在D盘的根目录下新建一个NAnt的构建文件,命名为my.build(NAnt的构建文件的后缀名是build)

虽然NAnt构建文件的后缀名不是XML,但是他的文档格式还是基于XML的,所以改文件的开头需要注明<?xmlversion="1.0"?>。在下面我们再加入其他的元素,整个文件的内容如下:

<?xmlversion="1.0"?>

<projectname="Aaron.Guo.NAnt.Project"default="show"basedir=".">

<targetname="show">

<echomessage="Hello NAnt"/>

</target>

</project>

保存以后,我们在CMD窗口中来运行这个构建文件,如下图所示:

我们用-buildfile:来指定需要构建的文件的地址(D:"my.build)。可以看到,这个文件就是显示了一个字符串:Hello NAnt。

下面,我们来看看这个文件中的3个重要标志:

1.  project表示构建文件的项目,每个构建文件有且尽有一个项目,他包括一系列的target,name="Aaron.Guo.NAnt.Project"说明项目名称是Aaron.Guo.NAnt.Project,这是可选的default="show "表示项目的默认目的(target)是show,basedir="."表示基准目录为当前目录。

2.  target表示一个目的,他包括一系列的task,name="show"指定目的的名称,这个是必选的。

3.  echo是一个任务(task)他用来显示一个特定的字符串,message="Hello NAnt"表示要显示的字符串为Hello NAnt。

下面,我们用这个构建文件来编译生成一个简单的CS文件。

对my.build文件修改后的内容如下:

<?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文件,该文件的内容如下:

namespaceAaron.Guo.Second.Project

{

publicclassHelloNAntCS

{

staticvoidMain()

{

System.Console.WriteLine("Hello NAnt using C#");

}

}

}

好,我们在CMD窗口中运行nant –buildfile:D:"my.build

可以看见,显示的东西还是和上次一样,而且CS文件也没有被编译也没有被运行。

原因是这个项目默认的target是show,所以编译和运行的target都没有执行。因此,我们需要显示的指定相应执行的target。

下面,为了执行build,我们输入nant –buildfile:D:"my.build build 执行的输出如下图所示:

并且我们可以在D:\HelloNAnt\bin中找到生成的可执行文件HelloNAnt-cs.exe

然后,我们再来输入nant –buildfile:D:\my.build run结果如下:

如果我们希望先显示消息,在运行程序,可以执行一下的命令:nant –buildfile:D:\my.build show run 结果如下:

现在,相信大家已经对NAnt的使用有了一定的了解了。

后记:

相信在不久的将来,NAnt也会拥有漂亮方便的图形界面操作方式,功能也将越来越完善。

nant

nant不像目前版本的visual studio .net,他是个基于.net的编译(build)工具,能够使项目的编译过程非常容易。当项目研发者非常多时,不可能依靠某个人去执行编译过程,你也不想经常去手工编译项目,而是代之以创建一个每天晚上自动运行的编译过程。nant允许你执行编译解决方案、复制文件、运行nunit测试、发送e-mail等工作。遗憾的是,nant没有漂亮的图像化界面,但他包括一个控制台应用程式和xml文件,xml文件指定了编译过程中应当完成的任务。注意visual studio 2005新的编译平台msbuild,他提供非常稳健的编译功能并且同样是由基于xml的项目文件驱动的。

使用nant

在这个例子中,我将为前面创建的nunitexample解决方案创建一个nant编译文件。首先创建一个以.build 为扩展名的xml文件,将他置于项目的根目录下,然后在文件顶部添加一个xml声明。第一个添加的标记是项目标记:

the nunit example project

项目标记设置了项目名称、缺省目标和基目录。描述标记设置了该项目的简要描述。

接下来是添加属性标记,用于存储可从文件所有地方访问的设置值。在本例中,我要创建一个名为debug的属性,他能设置为true或false,用于决定项目是否在调试时被编译(这个特别的属性最后实际上不影响项目的编译,他是你设置的一个简单变量,能在实际决定怎么编译项目后读取。)属性标记如下:

然后,创建一个目标标记。一个项目能包含多个标记,他们在nant运行时指定。如果没有指定目标,则使用项目元素中缺省的设置值。在本例中,缺省目标是“build”。让我们看一看目标元素,他包含大部分编译信息:

在目标元素中,我设置了要编译的目标名并创建一个任务描述。下面还要创建一个csc元素,他指定应当传递给c#编译器csc的内容。让我们看一看csc元素:

debug="${debug}">

首先,必须设置csc元素的目标。在本例中我将创建一个.dll文件,因此我将目标设置为“library”。接下来设置csc元素的输出,他指定.dll文件的创建位置。最后,需要设置debug属性,他决定项目是否在调试时被编译。因为前面已创建了一个属性来存储这个值,所以能使用下列字符串来访问该属性的值:${debug}。csc元素还包含一些子元素,这里需要创建两个元素:引用元素告知nant需要为这个项目引用的程式集,源文件元素告诉nant编译所包括的文件。在本例中,我引用nunit.framework.dll程式集并包括hashtabletest.cs文件。最终的编译文件见图8。(正常情况下你还应当创建一个用于删除生成的文件的clean目标,但我为了文章简短而省略了。)

图8 nant编译文件

要编译这个文件,需要在.build文件所在的项目根目录下执行nant.exe。如果编译成功,应用程式的bin目录下能找到.dll和.pdb文件。尽管使用nant确实不如在visual studio中点击“build”那么容易,但对于研发按进度自动运行的编译过程,他是个功能非常强大的工具。nant还包括一些有用的功能,例如,运行单元测试或复制其他文件(目前的visual studio编译过程不支持这些功能)。

转载于:https://www.cnblogs.com/zhangzt/archive/2010/09/16/1828196.html

使用Nant构建入门相关推荐

  1. 循序渐进——NAnt构建实例

    前言 NAnt,一款大名鼎鼎的.NET开源构建工具,功能强大,易于定制. 悲催的是开源的工具往往文档匮乏,广大程序猿们有时发现了看起来很酷的工具,可迟迟无法上手,时间就这么被残酷地浪费掉了. 在园子里 ...

  2. grade java_Gradle Java 构建入门

    Java 构建入门 Java 插件 如你所见,Gradle 是一个通用工具.它可以通过脚本构建任何你想要实现的东西,真正实现开箱即用.但前提是你需要在脚本中编写好代码才行. 大部分 Java 项目基本 ...

  3. 腾讯位置 - 地图构建入门(结尾附视频)

    写在前面:博主是一只经过实战开发历练后投身培训事业的"小山猪",昵称取自动画片<狮子王>中的"彭彭",总是以乐观.积极的心态对待周边的事物.本人的技 ...

  4. 【Java】在eclipse中使用maven进行项目构建 入门篇

    maven配置的简单说明 从\192.168.30.150\103.初级人员培训资料\新建文件夹 (2)\环境下提取apache-maven-3.0.4.zip压缩包,解压缩至E盘下 在E盘下新建&q ...

  5. java restful项目打包_构建入门Restful Web服务

    创建资源类 假设你已经设置了项目和构建系统,你可以创建Web服务. 通过考虑服务交互来开始这个过程. 该服务将处理GET请求/greeting,可选地使用name查询字符串中的参数.该GET请求应该返 ...

  6. 构建入门Restful Web服务

    创建资源类 假设你已经设置了项目和构建系统,你可以创建Web服务. 通过考虑服务交互来开始这个过程. 该服务将处理GET请求/greeting,可选地使用name查询字符串中的参数.该GET请求应该返 ...

  7. jenkins流水线构建入门(单机容器形态)

    参考文档 直接参考如下官方文档: 创建您的第一个Pipeline 部署步骤 一.CentOS下部署docker形态的Jenkins服务 1.安装Docker 详细步骤不再赘述,使用操作系统为CentO ...

  8. 笔记-Elasticsearch搜索引擎构建入门与实战

    协调节点根据数据获取分片ID的计算公式如下:shard=hash(routing)%number_of_primary_shards 第三方数据同步模块(如Canal)负责将数据库中的数据按照业务需求 ...

  9. musescore 构建入门

    musescore : 1.QT上面开发 2. Qt由于版本更新, 更新到QT6了, 构建器由qmake 更换到cmake ,musescore 在QT是用cmake 构建桌面软件包, 3.底层依赖库 ...

最新文章

  1. nginx 转将http跳转到https
  2. 基于大数据的用户行为预测
  3. volatile关键字解析~高级java必问
  4. 赋能数字化财富管理转型,神策数据推出全新证券行业解决方案
  5. boost::system::system_error相关的测试程序
  6. 006python路--深浅拷贝
  7. linux挂载硬盘读写,mount 挂载第二块硬盘,普通用户可以读写
  8. 虚拟现实技术利用计算机,虚拟现实技术在计算机教学的应用
  9. Railgun工具箱HWID验证
  10. Rsync的配置与使用
  11. 【转】WIFI-Direct(Wifi直连)、AirPlay、DLAN、Miracast功能介绍
  12. MSOCache 文件夹是否可以删除
  13. 分享一个360加固脱壳模拟器
  14. 流星蝴蝶剑服务器状态,流星蝴蝶剑什么是数据互通 哪些服务器会进行互通
  15. Verilog中repeat的用法
  16. 变压器的这些特性,你了解多少?
  17. Qt Quick实现九宫格划指锁屏视图
  18. (2) Hive安装
  19. 3.2_backpack_背包问题
  20. 【算法无用系列】AC自动机敏感词过滤

热门文章

  1. Android adb logcat使用技巧
  2. oracle 本地使用命令导入数据到远程主机
  3. [Unity3D]unity3d5.0简单的调用摄像头
  4. windows下使用MinGW+msys编译ffmpeg
  5. 关于返回结构体的函数
  6. tomcat原理,一个客户端请求的处理过程
  7. UML、XML、WebService,NUnit单元测试,测试驱动开发,httphandl,httpmodel
  8. imagemagick for java_ImageMagick使用for java(im4java)
  9. 单片机shell命令_MCU调试大法:使用串口实现简单shell功能
  10. Mac book pro M1 安装 Homebrew