0

我正在尝试实现连续构建过程,如果我查看顺序放置文件夹中的 XAML,我想指定一个自定义模板

也就是说,我不希望所有文件都放在一个文件夹中,我必须在根文件夹内创建一个文件夹结构,如 Folder1、Folder2。

基于文件扩展名的文件必须被放到特定的文件夹中

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

4

2 回答 2

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) 是团队构建使用的工作文件夹,与构建代理的构建工作区中的“二进制”文件夹相关

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

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

于 2013-01-25T13:21:05.983 回答
0

如果您使用的是默认构建过程模板(或其派生模板),则复制到 DropFolder 的操作Finally位于Try Compile, Test and Associate Changesets and Work Items. 您将不得不Copy to Drop Location用您的自定义序列替换该单个操作。可FindMatchingFiles用于根据搜索条件选择一组文件。

尝试复制单个项目时会出现一个问题;TFS 构建活动没有针对此的操作;只为CopyDirectory。您可以设置一个InvokeProcess,或者添加Community TFS Build Extensions您将获得的位置RobocopyPowershell操作以支持此类任务。

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

于 2013-01-25T08:29:33.987 回答