baby_zrq@163.com 本文内容主要来源于互联网,文中已尽量引用出处,但仍有疏忽遗漏之处,请原创作者见谅。 MSBu ild 的简单介绍与使用 MSBuild 是 Microsoft 和 Visual Studio 的新生成系统。它不仅仅是一个构造工具,应该称之为拥有相当强大扩展能力的自动化平台。 一、MSBu ild 简介 按照笔者现在的理解,MSBuild 平台的主要涉及到三部分:执行引擎、构造工程、任务。其中最核心的就是执行引擎,它包括定义构造工程的规范,解释构造工程,执行“构造动作”;构造工程是用来描述构造任务的,大多数情况下我们使用MSBuild 就是遵循规范,编写一个构造工程;MSBuild 引擎执行的每一个“构造动作”就是通过任务实现的 ,任务就是MSBuild 的扩展机制,通过编写新的任务就能够不断扩充 MSBuild 的执行能力。 所以这三部分分别代表了引擎、脚本和扩展能力。 1.1 构造工程(脚本文件) 先说说构造工程,只要通过 Notepad 打开任何一个VS2005(也就是支持 CLR 2.0)下的C#工程(csproj)文件,就知道构造工程到底是怎么回事了。 如果说脚本,我们立刻想到的是VBScript 或者JavaScript,构造工程内描述的内容,和常见的脚本语言的源文件之间还是有蛮大差距的,为什么也称之为“脚本”呢?因为笔者觉得没啥区别。脚本不就是纯文本形式保存,不经编译解释执行,可以实现一定逻辑分支的程序么? 再 看 构造工程 ,在构造工程 中我 们 可 以 定 义 和使用变 量( 通 过Property/PropertyGourp/Item/ItemGroup 等元素),可以使用条件分支(通过Choose/When/Otherwise 等元素)、能够在运行时给变量赋值(通过执行任务,获取其返回类型参数的方式)、能够定义执行块(通过 Target 元素,相当于函数)、能够进行异常处理(通过 OnError 元素)、还可以复用已有工程定义的内容(通过 Import 元素)。拥有这些能力和高级语言已经相差无几了,所以笔者认为构造工程不是描述性语言,而是脚本语言。 这里还需要强调一点的是,项目级元素(Property)可以在
元素下定义,也可以在构造过程中作为外部参数传入(具体参见《MSBuild 命令行参考》)。这是一个非常有用的特性,一般编译时选择配置项(Debug 或者Release)就是利用这个特性实现的。 有关构造工程的编写规范可以参考《MSBuild 项目文件引用》。 1.2 执行引擎 接下来看执行引擎,通常我们使用下面的命令行开始执行构造: MSBuild...