完全命令行.NET开发

很久没写日记了,今天走一个

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

NAnt

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

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

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

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

SDK命令

NAnt尽管提供了很多编译命令,但是项目更新速度实在是…….NET的开源项目比起Java来就是差远了啊。比如最新的NAnt,竟然不能编译Visual Studio 2005的solution。不要紧,我们可以使用万能的<exec> 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 /?”可以得到帮助,这里有命令的说明:http://msdn.microsoft.com/library/chs/default.asp?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,这是一个纯命令行的文本编辑工具,我相信我们迟早能打造一个纯命令行的开发环境,告别蓝色白色红色的窗口(如果有这个必要的话,如果真有这个必要的话)。

posted on 2008-04-01 14:22  小陆  阅读(5186)  评论(16编辑  收藏  举报