2006-11-14 15:51 昨天,把微软的 MSBuild 研究了一下。其实.Net 平台上的 Make 工具,已经有了 NAnt。但是 MSBuild 作为官方发布的工具,VS2005 对于它有很好的环境支持。
这些 Ant 类的工具,具有一下特点:
我的目录下一般分 src 和 debug 两个目录,src 顾名思义包含源文件,debug 包含输出的文件。
以前的 Nant 文件的内容是:
而新建的 MSBuild 文件内容为:
<Project DefaultTargets = "Compile"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
debug
src
g
<MakeDir Directories = "$(BuildDir)"
Condition = "! Exists('$(BuildDir)')" />
<CSC
Sources="@(CSFile)"
OutputAssembly = "$(BuildDir)\$(TargetExe).exe">
<Output TaskParameter = "OutputAssembly"
ItemName = "EXEFile" />
可以看到,MSBuild 引入的是 ItemGroup 和 PropertyGroup 两个概念,不同于 NAnt 的用 ${属性}引用,他的里面:
* $(Property 名)来表示引用 PropertyGroup 里面的内容 * @(Item 名) 来引用 ItemGroup 里面的内容
ItemGroup 和 PropertyGroup 不同之处在于是否可以元素是否可以出现多次,ItemGroup 可以,Property 则不可以。
其他的不同之处在于递增构建的支持,在 MSBuild 里面必须明确指出。如上面的 CSC 里面必须指定 Inputs 和 Outputs,否则 MSBuild 不是递增构建。而 NAant 则默认都是递增构建,即只编译比较新的源文件。
其他的都支持条件格式。NAant 还支持内部的 C#语句,发现就会自动编译。
MSBuild 还支持一些其他的 Task,都是.Net 平台上面的东西,如 Mainfest、SNK 等,对于.Net 的编译显的比较专业。
自动构建确实是一个好东西。他让你远离 IDE,没有了代码自动提示,没有了花哨的界面,只有代码。感觉真是不同.
[url]http://hi.baidu.com/pleasure8/blog/item/0d655c0e4dea91cb7bcbe106.html/url][