NAnt 与 MS Build
大家可能已经知道.net 2.0将会集成一个build tool:msbuild,当然,大家也知道,这明显的同.net社区中的nant功能重合。在此事上,我个人极度反感微软的做法。让我们来看看,如果java没有apache软件基金会的一些项目,java会像有这样的影响力? 微软真正的做法应该像sun将servlet和jsp引擎源代码捐赠给apache软件基金组织或是像ibm捐赠eclipse一样。让nant开发团队来做msbuild。毕竟,.net的发展很大程度上决定于.net社区的活跃层度。
关于msbuild的细节,我们可以从pdc 的session中了解 下载该ppt
随该ppt提供的sample带有一些文档,对msbuild进行了较为详细的介绍,这可能是当前惟一的msbuild的介绍资料了
无论是msbuild或是nant,都非常简单易用,msbuild除了build新格式的项目文件外,还能编译vs 2003的项目文件。从功能上来说nant现在要丰富一些,但msbuild将来绝不会逊色于nant,未来,估计nant只会在mono项目中拥有一席之地,我替nant感到难过:(
msbuild和nant均使用xml格式保存项目文件,从总体上语义类似,如根元素project,主要的tag: target等,但从文件格式上两者是不兼容的,下面说明以下主要的结构上的区别,方便大家同时掌握此两者。
元素命名
msbuild 使用Pascal命名法,nant使用纯小写
属性(property)
1、声明
nant:
<property name="propertyname" value="propertyvalue"/>
msbuild
<Property propertyname="propertyvalue"/>
2、使用
nant:
${propertyname}
msbuild
$(propertyname)
msbuild还有(PropertyGroup)属性组的概念
任务(task)
nant和msbuild的task模式不同,nant是每个任务一个标记,如
<csc output="hello.exe" target="exe">
....
</csc>
而msbuild则只有一个标记task,通过name属性来进行区别
<Task Name="CSC">
....
</Task>
同nant类似,msbuild允许你通过继承Task来创建自己的Task
FileSet vs Item
nant使用FileSet的概念,比方说,以下说明需要编译的文件,其中references,sources就是FileSet
<project name="testmsbuild" default="Build">
<target name="Build">
<csc target="exe" output="test.exe">
<references>
<includes name="bin\mydll.dll"/>
<include name="bin\mydll2.dll"/>
</references>
<sources>
<includes name="test.cs"/>
<includes name="person.cs"/>
</sources>
</csc>
</target>
</project>
msbuild使用Item的概念,用type属性来区别,允许多个同type的Item,如果使用@(typename)引用则成为ITaskItem Array,像Soruces,References 都接受ITaskItem Array(string array 是通过;分隔来实现的)
<Project DefaultTargets="Build">
<Item Type="CSFile" Include="msbuild.cs"/>
<Item Type="Reference" Include="Person.dll"/>
<Target Name="Build">
<Task Name="CSC" Sources="@(CSFile)" OutputAssembly="testmsbuild.exe" TargetType="exe" References="@(Reference)"/>
</Target>
</Project>
个人看法
就我自己而言,我还是喜欢nant,当然,主要是msbuild当前仅提供有限的功能。而nant,似乎已经到了无所不能的境界,大家用用便知。
Reader Comments 标题: re: NAnt 与 MS Build 创建task 的过程很简单,像nant的许多功能都可以通过简单的扩展来得到,我新写了一个简单的介绍,你可以看看 www.soho-works.net/BLOG/286.asp 标题: re: NAnt 与 MS Build 最近关注这些东西.请教一个问题: 谢谢. |
转载于:https://www.cnblogs.com/huqingyu/archive/2004/07/15/24596.html
NAnt 与 MS Build相关推荐
- .NET开源社区存在的问题
12月9日, Oren Eini ,以色列的一位热衷于.NET开源项目的开发人员,在他的Blog上写了一篇文章分析了.NET开源社区存在的问题,文章的题目是:The Problem of Open S ...
- Resharper4.5:增强你的.net开发
Resharper4.5:增强你的.net开发 介绍 无庸置疑,ReSharper是最智能化的微软Visual Studio插件.它包括一系列丰富的能大大增加C#和Visual Basic.net开发 ...
- 我们谈一谈 Resharper
一.ReSharper介绍 是一个JetBrains公司出品的著名的代码生成工具.其能帮助Microsoft Visual Studio成为一个更佳的IDE,它包括一系列丰富的能大大增加C#和Visu ...
- 实用的visual studio插件,值得收藏
1.ReSharper(VS必装,代码重构.代码修正功能) ReSharper 是一个JetBrains公司出品的著名的代码生成工具.其能帮助Microsoft Visual Studio成为一个更佳 ...
- [转]Nant daily build实践
本文转自:http://www.cnblogs.com/moonvan/archive/2006/11/07/552585.html 折腾了一个周,基于Nant的VS.NET项目每日构建终于成功了,在 ...
- 循序渐进——NAnt构建实例
前言 NAnt,一款大名鼎鼎的.NET开源构建工具,功能强大,易于定制. 悲催的是开源的工具往往文档匮乏,广大程序猿们有时发现了看起来很酷的工具,可迟迟无法上手,时间就这么被残酷地浪费掉了. 在园子里 ...
- Delphi 2007体验!
Delphi 2007体验! baidu 内容摘要:CodeGear(From Borland) 公司公布了最新的Delphi 2007 For Win32版本号.作为一个 Delphi 的使用者,第 ...
- Windows phone 应用开发[3]-UI 设计
本篇来谈谈Windows phone UI设计.这个有点让我痛苦的话题. 其实谈到移动平台的设计.原来没有实际接触Windows phone 产品开发工作时对UI设计这个概念不是特别强烈. 并没有感到 ...
- ARM嵌入式平台性能测试
在新项目需要选择一个全新的基于ARM嵌入式处理器平台的时候,难免会需要对新平台的性能进行评估,这时候有几种思路可以进行参考,一是ARM芯片厂家发布的性能指标,不过大多数是基于理论情况;二是购买同样平台 ...
最新文章
- 重载和覆盖的区别?(overload vs override)
- 什么是内卷?华为内部这篇文章读懂
- Java----前端验证之验证码额实现
- Mybatis学习笔记13 - 动态sql之set标签
- 2013年上半年工作总结,哇哈哈哈,给自己看的。
- notepad 没有plugin manager_和平精英巅峰赛正式开启,热度却没有象中那么高!
- Android xmlns 的作用及其自定义
- 【CVTE Web后台开发实习生2019.12.05在线笔试】总结
- Linux下redis基本安装配置(CentOS7)
- 2014-7 Andrew Ng 自动化所报告听后感
- undefined reference to `crypto_get_random'
- 为什么会存在乱码?什么是编解码?为什么会有这么多字符集?
- Comma Separated Values Format
- C++学习(第二篇)//最详细C++运算符经验
- TCP 与UDP 的区别
- Docker镜像讲解,教你如何自制并上传一个镜像
- 世界上最快的浏览器(mxnitro浏览器)
- 真正的成功(约翰·伍登)
- 这本书为什么会被誉为Spring开发百科全书(文末附带源码视频)
- 基于JAVA实现的纸牌游戏