代码之家  ›  专栏  ›  技术社区  ›  Scott Langham

如何将文件放入TFS生成放置位置

  •  5
  • Scott Langham  · 技术社区  · 14 年前

    我刚开始使用tfs build。我已经定义了一个构建,它作为一个连续集成运行。它创建了一个放置文件夹,但其中没有任何内容。

    在放置文件夹中移动东西的最佳实践是什么?我看到了一个二进制文件文件夹,是否需要将内容复制到其中,或者是否以某种方式更改tfsbuild.proj以将我想要的文件复制到drop文件夹?

    2 回复  |  直到 6 年前
        1
  •  3
  •   johnnyRose    6 年前

    听起来您想将其他文件从工作区(或其他地方)复制到放置位置吗?

    上面的目标为您提供了一个如何创建复制文件的目标的示例,但您可能想知道如何将其连接到tfsbuild.proj中。

    一个简单的方法就是使用一个预先定义的骨架目标,比如AfterDropBuild。如果您有类似上面提到的复制文件的目标,那么您可以将其放入tfsbuild.proj中:

    <CreateItem Include="$(SolutionRoot)\Source\RandomFilesInWorkspaceFolder\**\*.*">
      <Output TaskParameter="Include" ItemName="RandomFiles" />
    </CreateItem>
    <Copy SourceFiles="@(RandomFiles)" DestinationFiles="@(RandomFiles->'$(DropLocation)\RandomDestinationSubFolder\%(RecursiveDir)%(Filename)%(Extension)')" />
    
        2
  •  1
  •   Scott Langham    10 年前

    我似乎通过在tfsbuild.proj的末尾添加这个来实现它。

    <Target Name="PackageBinaries">
        <ItemGroup>
            <FilesToDrop Include="$(SolutionRoot)\MyProduct\Installer\Bin\**\*.msi"/>
        </ItemGroup>
        <Message Text="FilesToDrop=@(FilesToDrop)"/>
        <Copy SourceFiles="@(FilesToDrop)"
          DestinationFiles="@(FilesToDrop ->'$(BinariesRoot)\%(RecursiveDir)%(Filename)%(Extension)')"/>
    </Target>
    

    它将需要的MSI文件复制到二进制文件文件夹中,然后正常的TFS构建系统将该文件夹复制到放置位置。我注意到每次启动构建时都会删除二进制文件文件夹,因此您不必担心清理。

    packagebinaries目标似乎是标准的目标名称,您可以为执行此类操作而重写该名称。


    更新 更新版本的tfs可能有更好的方法!