使用TFS Team Build自定义Drop文件夹结构

RMD*_*RMD 5 msbuild tfs team-build tfs2012

我正在使用TFS 2012来自动构建包含多个Windows服务和两个Web应用程序的解决方案.

我使用了我在这里找到的指南来自定义构建过程模板,以便将windows服务放在我喜欢的文件夹结构中.特别:

  1. \ dropserver\droproot\MyApp的\ BuildNumber \
    • \服务1
    • \服务2
    • \服务3
    • \服务4

这很好用,但不幸的是它不适用于Web应用程序.如果我使用相同的策略,我只是获取每个Web应用程序的/ bin内容,而不是完整的站点内容.

MSBuild通常使用Web应用程序目标来处理此问题,但由于某种原因,当您按我自定义构建时,这不起作用.我不再在构建输出中获得_PublishedWebSites文件夹.(我猜这是因为我清除了MSBuild任务的OutDir属性.)

有没有人做过这样的事情,并让它与Web应用程序一起工作?

RMD*_*RMD 1

经过一些定制,这个解决方案最终对我有用:

http://www.edsquared.com/2011/01/31/Customized+Output+Directories+For+TFS+2010+Build.aspx

基本上,执行了该链接建议的操作,但也利用了新的解决方案配置(我将其称为 TeamBuild)而不是条件属性定义。

我相信使这一切顺利进行的关键是将 outputDirectory 作为 TeamBuildOutDir 参数传递给 MSBuild。将此变量引用嵌入到 OutDir 或 OutputPath 变量中,允许 Team Build 构建到正确的暂存位置,然后自动将文件从该位置复制到放置文件夹。

我将更进一步,摆脱整个 _PublishedWebSites 的事情,但这将完全在构建工作流程中完成。

编辑: TFS 2013 通过简单的构建配置选项原生支持此功能:

在此输入图像描述