TFS持续构建自定义Drop文件夹模板

时间:2013-01-25 02:11:35

标签: tfs

我正在尝试实现连续构建过程,如果我查看序列中的XAML Drop Folder我想指定一个自定义模板

即我不想将所有文件都放在一个文件夹中, 我必须在根文件夹中创建像Folder1,Folder2这样的文件夹结构。

基于文件扩展名的文件必须删除到特定的折叠器

任何一点如何实现这一目标,

2 个答案:

答案 0 :(得分:2)

如果您对修改TFS构建模板感到满意,那么Torbjörn的答案绝对是最佳选择。自定义构建模板将使您可以完全控制输出。然而,这可能是过度的,特别是如果你不熟悉WF和Team Build的内部。另一种方法是编写一些msbuild,它将作为构建的一部分运行。

为此,请创建一个名为“DropTidy.proj”的文件并编辑该文件,使其看起来像这样

<Project DefaultTargets="CopySQLReleaseFiles" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">

  <Target Name="CopySQLReleaseFiles">

    <ItemGroup>
      <SqlBuildOutput Include="$(OutDir)\*.sql" />
    </ItemGroup>

    <Copy SourceFiles="@(SqlBuildOutput)" DestinationFolder="$(OutDir)\SQL" />

  </Target>

</Project>

上面的示例将所有扩展名为“sql”的文件复制到名为“SQL”的文件夹中。 $(OutDir)是团队构建使用的工作文件夹,它关联到构建代理程序的构建工作区中的“Binaries”文件夹

将文件检入TFS,然后将其添加到“团队构建定义”中的“要构建的项目”列表中。确保它是列表中的最后一个“解决方案”,以便它在构建中的其他解决方案之后运行。还要确保您检查proj文件的文件夹是构建工作区的一部分。

运行您的构建,您应该在放置位置看到一个名为SQL的新文件夹。

答案 1 :(得分:0)

如果您使用的是默认构建流程模板(或其衍生物),则复制到DropFolder的操作位于Finally Try Compile, Test and Associate Changesets and Work Items块内。您必须使用自定义序列替换单个Copy to Drop Location操作。 FindMatchingFiles可用于根据搜索标准选择一组文件。

尝试复制单个项目时会出现一个问题; TFS构建活动没有针对该行动;仅适用于CopyDirectory。您可以设置InvokeProcess,或者从Community TFS Build ExtensionsRobocopy操作添加Powershell来支持此类任务。

如果您使用的是基本的DefaultTemplate,我强烈建议您对其进行更改并将其用于构建。