2010-05-06 82 views
5

我是使用TFS生成的新手。我已经定义了一个作为持续集成运行的构建。它创建了一个drop文件夹,但没有任何内容。我如何把文件放在TFS生成放置位置

移动放置文件夹中的东西的最佳做法是什么?我看过一个Binaries文件夹,我需要将东西复制到那里,还是以某种方式修改TFSbuild.proj以将我想要的文件复制到drop文件夹?

回答

1

我好像得到它的工作,加入这个靠近我TFSBuild.proj

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

它复制想MSI文件到文件夹中的二进制文件其中正常TFS构建系统然后复制到放置位置结束。我注意到Binaries文件夹每次开始构建时都会被删除,因此您不必担心清理问题。

PackageBinaries目标似乎是您可以重写以执行此类事情的标准目标名称。


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

3

这听起来像你想从工作区(或其他地方)复制杂项文件到放置位置?

上面的目标为您提供了一个如何创建目标以复制文件的示例,但您可能想知道如何将它连接到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)')" />