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

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,这是一个纯命令行的文本编辑工具,我相信我们迟早能打造一个纯命令行的开发环境,告别蓝色白色红色的窗口(如果有这个必要的话,如果真有这个必要的话)。

完全命令行.NET开发相关推荐

  1. 基于Golang的CLI 命令行程序开发

    基于Golang的CLI 命令行程序开发 [阅读时间:约15分钟] 一. CLI 命令行程序概述 二. 系统环境&项目介绍&开发准备 1.系统环境 2.项目介绍 3.开发准备 三.具体 ...

  2. 命令行工具开发:如何快速实现命令行提示?

    简介:对于稍微复杂一些的命令行工具,命令行的提示功能必不可少.那么对于不同语言的开发者,有没有一种简单快捷的实现方式呢?本文分享一种快速实现的方法,使用YAML文件定义命令行工具的使用规范,再通过工具 ...

  3. Node交互式命令行工具开发——自动化文档工具

    转载自:小磊 https://segmentfault.com/a/1190000039749423 nodejs开发命令行工具,流程相对简单,但一套完整的命令行程序开发流程下来,还是需要下点功夫,网 ...

  4. 服务计算作业三——CLI 命令行实用程序开发基础

    服务计算作业三--CLI 命令行实用程序开发基础 18342138 郑卓民 本次作业gitee仓库链接(完整代码) 概述 CLI(Command Line Interface)实用程序是Linux下应 ...

  5. 服务计算 HW3 CLI 命令行实用程序开发基础

    文章目录 一. 概述 二. Golang 的支持 ① 使用 os 包处理参数 ② 使用 flag 包处理参数 三. 开发实践 ① 项目要求 ② 设计说明 1) selpg 定义 2) 代码设计 1. ...

  6. Arduino CLI命令行ESP32开发环境搭建(Linux Ubuntu操作系统)

    陈拓2023/03/06-2023/03/11 简介 Arduino cli是一个命令行界面,您可以使用它创建草图(sketch)并将其上传到开发板中.它提供了ArduinoIDE的所有功能: 编写s ...

  7. 用PHP开发命令行工具

    介绍 用过laravel开发过项目的都应该用过artisan,通过artisan我们可以在命令行中创建控制器类,Eloquent类等,今天我们将通过php来开发命令行工具 开发环境与工具 使用vagr ...

  8. order by 影响效率么_提升开发效率N倍的20+命令行神器

    图 by:石头@青海湖 关于作者:程序猿石头(ID: tangleithu),现任阿里巴巴技术专家,清华学渣,前大疆后端 Leader.以每篇文章都让人有收获为目的,欢迎关注,交流和指导! 背景 本文 ...

  9. 提升开发效率N倍的20+命令行神器!(附 demo)

    点击上方蓝色字体,关注我 -- 一个在阿里云打工的清华学渣! 图 by:石头@青海湖 关于作者:程序猿石头(ID: tangleithu),现任阿里巴巴技术专家,清华学渣,前大疆后端 Leader.以 ...

最新文章

  1. python计算四元素组合算法_python – 算法,列表元素之间的最近点
  2. python的顶级高手_Python+深度学习
  3. epoll的LT和ET模式
  4. BZOJ5092:[Lydsy1711月赛]分割序列(贪心,高维前缀和)
  5. check GPU mem size on condor
  6. j2me模拟器java游戏存档修改_单机游戏存档修改
  7. phpMyadmin学习入门
  8. 一共81个,开源大数据处理工具汇总(上)
  9. 生成Bernese格式的地球自转参数文件-POLUPD
  10. Execution failed for task ':app:processDebugResources'. No slave process to process jobs, aborting
  11. nginx 启动 报错,80端口被占用问题,80端口无法杀掉问题
  12. 一段很有意思的代码!!
  13. UVA815 洪水! Flooded!
  14. keras.models导入Sequential错误
  15. 0.96寸OLED(SSD1306)屏幕显示(一)——基础功能介绍
  16. handlebars使用
  17. XiaoMi-Ruby-15.6-UMA-only黑苹果efi引导文件
  18. SpringBoot学习笔记【part12】Web开发——Thymeleaf模板引擎
  19. KVM(一)_虚拟化介绍
  20. 用好微信电商精准营销的核心产品

热门文章

  1. 三大国有银行同时入股 AI 公司第四范式
  2. 2030全球新出行产业报告:2.2万亿美元蛋糕将这样分
  3. 有点酸!中外程序员都是怎么炫富的? | 每日趣闻
  4. 10 个最值得 Python 新人练手的有趣项目 | 赠书
  5. 从Promise来看JavaScript中的Event Loop、Tasks和Microtasks
  6. 为什么说Python是伟大的入门语言
  7. 《数据分析实战:基于EXCEL和SPSS系列工具的实践》——3.3 耗时耗力的数据整理过程...
  8. 三种途径助物联网改变业务 省心省时省成本
  9. python3入门(三)字典的使用
  10. 《看透SpringMVC》第十二章 HandlerMapping