繁体   English   中英

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

[英]Customizing Drop Folder Structure with TFS Team Build

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

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

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

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

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

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

我想我可以帮忙解决这个问题,如果OutDir与OutputPath相同,那么在构建目标中看起来不会创建已发布的网站文件夹。

所以这并不完美,但是如果你将以下内容添加到第一个属性组的csproj文件中,你将把所有内容都部署到“\\ bin \\ deploy \\”中,包括_PublishedWebsites文件夹

<DeployOnBuild>True</DeployOnBuild>
<OutDir>bin\deploy\</OutDir>

通过一些定制,这个解决方案最终为我工作:

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

基本上,做了那个链接推荐,但也利用了新的解决方案配置(我称之为TeamBuild)而不是条件属性定义。

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

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

编辑: TFS 2013本地支持这个简单的构建配置选项:

在此输入图像描述

看看这个帖子也是这篇帖子。 团队构建:使用MSDeploy在本地发布由于您需要Web项目的所有文件,因此需要触发发布过程,并通过调整该过程的目标,可以将所有文件复制到需要的位置。 我认为他的回答中的选项(2)对你有用。 我希望有所帮助。

正如我在您的参考链接中看到的,它将只编译和打包二进制文件。 它没有按照提到的步骤部署网站。

如果要在_PublishedWebSites文件夹下获取.html,.css,.js等,则需要进行Web部署 我们可以通过单击VS项目右键菜单中的publish选项并选择“ 发布方法”作为文件系统来手动执行此操作。

但是,由于您需要在构建中自动执行此操作并将其放在自定义drop文件夹中,因此您可能需要通过调用AspNetCompiler任务来操作MSBuild脚本。 您可以在MSDN链接上获得有关此内容的更多信息。 通过在调用此目标时指定TargetPath ,可以在适当的自定义drop文件夹中部署Web文件。

快乐的脚本。

你有没有看过这个博客,这解决了我想要自定义TeamBuild输出目录的问题。 使用TFS 2013可定制的O / P.

可自定义O / P与TFS 2012和.NET Framework 4.5

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM