NAnt 完全命令行.NET 开发

liuxue.gu@hotmail.com · 2008年06月18日 · 5 次阅读

Windows 系统的 GUI 太好用了,以至于很多 Windows 开发者都不知道还有更好用的命令行模式。命令行模式可以把自己经常使用的功能写成脚本,一个命令就可以全部工作执行掉,实在是广大程序员同志的福音啊。

NAnt Java 的开发者都知道 Ant,但是.net 的开发人员却很少有使用 NAnt 的。大部分程序员同志都习惯了按下 F7,然后把生成物复制到部署文件夹下面,注册 dll,修改配置文件,建立数据库、数据表、初始化数据,启动服务。很好,但是千万不要忘了某些步骤,否则早上用户来上班,打开电脑,出现一堆 ERROR,运维的电话会被打爆的。

用 NAnt 吧,编译、测试、部署、服务恢复都可以用一个脚本解决。这里是 NAnt 主页,下载包里面有 Samples 可以看,还有帮助文档。NAnt 集成了大部分.NET 开发的命令:编译、复制、NUnit 测试,还可以用 Tag 执行系统命令,用这个 Tag 可以执行诸如 “net start” 之类的命令,方便的重启 Windows 服务。这样一来,除了代码要自己写,剩下的工作一个 NAnt 脚本完成,开发人员,你们有福了。

运维人员也不用担心系统部署了,不再需要在文档堆中挣扎,不小心忘记注册了某个 dll,或者缺少了一个 sql 脚本。看看 NAnt 脚本吧,一切都在那里,一个脚本胜过千言万语。

写一个 NAnt 脚本吧,写一次需要一天,写完了可以用一年。

SDK 命令 NAnt 尽管提供了很多编译命令,但是项目更新速度实在是…….NET 的开源项目比起 Java 来就是差远了啊。比如最新的 NAnt,竟然不能编译 Visual Studio 2005 的 solution。不要紧,我们可以使用万能的 Tag。Visual Studio 和.NET Framework SDK 都是提供了很多命令行工具的,比如下面的命令,就可以对 solution 进行编译,并且把编译过程记录在 build.log 日志里:

devenv HelloWorld.sln /Build Debug /Out build.log

正常情况下,devenv 程序应该在你的机器上这个位置:%ProgramFiles%\Microsoft Visual Studio 8\Common7\IDE,运行 “devenv /?” 可以得到帮助,这里有命令的说明:[url]http://msdn.microsoft.com/library/chs/default.asp?url/url][ =/library/CHS/vsintro7/html/vxgrfCommandLineSwitches.asp

有了这些命令,再用 NAnt 集成起来,可以减少很多手工的工作。比如我们需要使用 xsd 命令生成 cs 代码,再复制到指定的文件夹,编译成 dll,然后依赖这个 dll 编译新的项目,这一系列行为都可以集成在一个 NAnt 文件里,一键 OK。

其他程序的命令行模式 MS 提供的很多程序实际上都是具有命令行模式的,比如 Sql Server 的客户端工具,就提供了 sqlcmd 命令行工具,下面的命令就可以连接到 mydb 数据库,并且在数据库上执行 ct.sql 脚本:

sqlcmd -S131.30.20.15 -Uuid -Ppwd -dmydb -ict.sql

有了这个工具,就可以在 NAnt 脚本里写一个 install 段,把安装数据库、建立数据表、初始化数据等等一切的工作都写在里面,随系统安装一起执行。

如果已经安装了 Sql Server 2005 Native Client,可以打开命令行窗口,运行 “sqlcmd /? ” 看到命令的帮助,对于 Sql Server 2000 的客户端,MS 也提供了 isql 命令实现同样的功能,命令参数也差不多。

MS 为一些应用程序提供了 VBScript 控制方式,比如这个脚本:RestartBizTalkHostInstances.vbs,他可以重新启动 BizTalk 服务所有的宿主进程,每次更新部署一个 BizTalk 业务流程之后需要进行这个操作,新的流程才能启用。可以在命令行中这样运行 VB 脚本:

cscript /NoLogo RestartBizTalkHostInstances.vbs

这样的脚本在 MS 随软件发布的 SDK 和 Sample 中有很多,这个脚本就是来自 BizTalk 的 SDK。

加强 Windows 的命令行 Windows 本身提供的命令行工具非常弱,至少比起 Unix/Linux 平台差远了啊。于是有一些工具对他进行了补充,最简单的方式,他们把一些 Unix/Linux 下面的命令移植到 Windows 上面来了,比如 UnxUtils 项目,把这个东西下载解压,设置一下 PATH 环境变量,就可以使用 Linux 下面最常用的一些命令。比如下面的命令就能看到当前目录下所有包含 “CPMIS” 字符串的文件:

grep CPMIS *

下面的命令可以遍历下级目录,找到全文中同时含有 “CPMIS” 和 “Info” 的文件:

grep -r CPMIS * | grep Info

UnxUtils 还收入了 ls、cp、rm、tail、tar、gzip、sed、diff 等一些 Unix 家常工具,如果你要进行日志分析,或者需要修改上千个文件名,再进行压缩打包备份,这些工具会大大的帮助你。

另外还有一个东东叫做 Cygwin,他是 Windows 平台上的 Linux 模拟器,他提供了一个模拟环境,和一些命令工具,使用起来一切都和 Linux 平台一样。

有了这些东西,再加上一个 VIM,这是一个纯命令行的文本编辑工具,我相信我们迟早能打造一个纯命令行的开发环境,告别蓝色白色红色的窗口

本文来自于博客园 作者:小陆

暂无回复。
需要 登录 后方可回复。