MSbuild的功能

时间:2010-11-22 05:48:40

标签: .net msbuild

我是MSBuild的新手,有几个问题:

  1. 使用MSBuild可以实现哪些目标?

  2. 是否可以使用MSBuild进行测试?

  3. 如何将MSBuild与TFS集成?这样做有什么好处?

4 个答案:

答案 0 :(得分:4)

1 - http://msdn.microsoft.com/en-us/library/0k6kkbsd.aspx

2 - 是

3 - TFS Build运行MSBuild目标。它为您提供持续集成,可以提前警告您失败。

答案 1 :(得分:2)

作为#1的一个例子,我上周工作的脚本做了以下

  1. 在发布模式下清理并重建所有需要的项目
  2. 删除不需要的文件(pdbs,随机xml文件等),并复制到其他依赖项(配置文件的发行版本等)
  3. 为Windows Mobile生成安装程序cab
  4. Gzip the cab,包含在另一辆出租车里(长篇故事......)
  5. 建造第二个驾驶室
  6. 将用户培训文档复制到目标目录
  7. 压缩目标目录以分发给客户。
  8. 所以,现在整个过程可以快速完成,并且以100%可重复的方式完成,甚至可以在别人的机器上完成。

    这是我的第一个主要的MSBuild脚本,它是在两个工作日内构建的(一直没有坚定地工作,主要是在等待人们回复时)。几乎所有都是使用开箱即用的MSBuild完成的。压缩来自MSBuild Extension Pack,并且cabwiz工具周围的包装器来自ctacke's blog。 Gzip任务是在大约10分钟内创建的,对如何编写MSBuild任务以及System.Web.Compression中的Gzip库知之甚少。

    快速查看会生成msbuildtasks项目,其中包含NUnit任务。查看该网站上的任务列表,了解可以完成的一些事情。

答案 2 :(得分:0)

使用MSBuild可以实现哪些目标?

当您手动部署应用程序时,几乎可以完成所需的一切。主要是:

  • 编译代码的最新版本

  • 创建和删除备份

  • 为不同的环境创建特定的配置文件(web.configs / app.configs)

  • 部署到任何环境

  • 对部署的版本进行一些冒烟测试,如果失败则自动恢复备份

  • 如果有什么是你做不到的,也许有人编程了一些东西(例如参见这个有用的网站http://msbuildtasks.tigris.org),或者你可以自己编程。

是否可以使用MSBuild进行测试?

是。您可以运行单元测试的子集(或所有单元测试)并查看结果,使构建失败或在任何测试失败时发出警告。示例pic:http://www.codewrecks.com/blog/wp-content/uploads/2009/06/image-thumb48.png

如何将MSBuild与TFS集成?这样做有什么好处?

主要是您的构建脚本将从TFS获取最新版本的代码。您还可以使用标记的构建(f.e:alpha1,alpha2等),并在每个构建中查看包含哪些变更集。

使用TFS / MSBuilds的要点是持续集成,至少每天/每晚自动构建,甚至每次有人检查某些代码时(如果项目很小)自动构建。这样你

答案 3 :(得分:0)

msbuild的新手你说...好吧,msbuild是一个基于xml的元语言,主要用于驱动代码的编译。作为一种元语言,它可以用来做任何事情。其中的主要构建块是任务。除了内置的标准任务,您可以在c#中编写自定义任务,因此您对msbuild可以执行的操作没有限制。另外,内置的Exec任务意味着你可以调用任何exe。

现在,它正在研究它能做什么,而不是它最擅长的是什么。 msbuild的优势在于增量构建方面。正如我之前所说,它主要是为了驱动代码的编译。增量构建功能可以使构建更快,因为只有更改的文件才能级联其输出。这是msbuild的一个高级方面,但它的优势所在。

可以用于测试吗?当然,它可以做任何事情。如果您使用TFS2005 / 8,则调用的teambuild msbuild脚本已执行测试并将结果发布回TFS服务器。 (在TFS2010中也是如此,但仅使用升级构建模板)。

与TFS的集成取决于您的意思。 Msbuild是TFS2005 / 8的构建引擎,因此它没有得到更多集成。在TFS2010上,它仍然用于编译解决方案,但WF4现在是构建引擎。为兼容性,TFS2005 / 8的所有msbuild任务也可在TFS2010中使用。

因此,如果您使用TFS,那么从一个角度来看,您已经在整合msbuild和TFS。