惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Help Net Security
博客园 - Franky
GbyAI
GbyAI
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
爱范儿
爱范儿
IT之家
IT之家
酷 壳 – CoolShell
酷 壳 – CoolShell
aimingoo的专栏
aimingoo的专栏
博客园_首页
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Recent Announcements
Recent Announcements
Scott Helme
Scott Helme
有赞技术团队
有赞技术团队
M
MIT News - Artificial intelligence
C
CERT Recently Published Vulnerability Notes
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Jina AI
Jina AI
F
Fortinet All Blogs
N
Netflix TechBlog - Medium
L
LangChain Blog
L
LINUX DO - 最新话题
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
H
Hacker News: Front Page
MyScale Blog
MyScale Blog
P
Palo Alto Networks Blog
G
Google Developers Blog
Google DeepMind News
Google DeepMind News
AI
AI
T
Troy Hunt's Blog
Microsoft Azure Blog
Microsoft Azure Blog
阮一峰的网络日志
阮一峰的网络日志
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Vercel News
Vercel News
Microsoft Security Blog
Microsoft Security Blog
罗磊的独立博客
S
Secure Thoughts
大猫的无限游戏
大猫的无限游戏
博客园 - 叶小钗
人人都是产品经理
人人都是产品经理
Blog — PlanetScale
Blog — PlanetScale
博客园 - 司徒正美
Apple Machine Learning Research
Apple Machine Learning Research
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
S
Security @ Cisco Blogs
Cloudbric
Cloudbric
E
Exploit-DB.com RSS Feed
Attack and Defense Labs
Attack and Defense Labs

博客园 - 小陆

版本的故事(五)闯关旅程 从技术谈到管理,把系统优化的技术用到企业管理 版本的故事(四)版本号有多重要 版本的故事(三)取个好名字 版本的故事(二)版本的诞生 版本的故事(一)为什么要写版本的故事 程序配置的原则和实践以及 Spring Boot 支持方式 全文检索基本概念 Elasticsearch升级1.5版本暴露jdk的bug 以后还是要多写点博客 DateTime类型的一个Bug .NET初学者架构设计指南(四)Model-View-Controller .NET初学者架构设计指南(三)设计模式 .NET初学者架构设计指南(二)OO设计初次见面 .NET初学者架构设计指南(一)Hello world的时代 软件的逻辑层次 无痛苦的软件维护——被遗忘的需求 无痛苦的软件维护——文档和代码 NGOSS的一点简单概念
完全命令行.NET开发
小陆 · 2008-04-01 · via 博客园 - 小陆

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

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”字符串的文件:

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

grep -r CPMIS * | grep Info

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

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

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