msbuild复制具有相同文件夹名称的整个文件夹

时间:2016-10-27 18:05:19

标签: tfs msbuild msbuild-4.0

我试图复制位于TFS中不同位置的整个文件夹。

我有以下内容:

<Target Name="BuildControles">

    <ItemGroup>
      <Controles Include="$(BUILD_SOURCESDIRECTORY)\ABC\FOLDERB\*.*" />
      <Controles Include="$(BUILD_SOURCESDIRECTORY)\joe\bloe\FOLDERA\*.*" />
    </ItemGroup>

    <Copy SourceFiles="@(Controles)" DestinationFiles="@(Controles->'$(OutDir)metadata\[FOLDERA OR FOLDER B]\%(Filename)%(Extension)')" />
</Target>

我需要将ItemGroup中指定的那些文件夹(FOLDERA和FOLDERB)复制到位于&#34;元数据&#34;下的特定路径。文件夹所以我最终:

..元数据\ FOLDERA ..

..元数据\ FolderB中..

尝试使用%(目录),%(递归目录)或%(RelativeDir)进行许多不同的操作,但无法找到方法。

请保持温和,我刚刚开始使用MsBuild:)

1 个答案:

答案 0 :(得分:1)

在msbuild中,您可以向项目添加元数据,这些项目基本上是附加到项目的属性,然后可以使用%()语法引用这些项目。这似乎适合你想要的东西:

<ItemGroup>
  <Controles Include="$(BUILD_SOURCESDIRECTORY)\ABC\FOLDERB\*.*" >
    <Dest>FOLDERB</Dest>
  </Controles>
  <Controles Include="$(BUILD_SOURCESDIRECTORY)\joe\bloe\FOLDERA\*.*">
    <Dest>FOLDERA</Dest>
  </Controles>
</ItemGroup>

<Copy SourceFiles="@(Controles)"
      DestinationFiles="@(Controles->'$(OutDir)metadata\%(Dest)\%(Filename)%(Extension)')" />