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

msbuild copy entire folder with same folder name

我正在尝试复制位于 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)复制到位于 "metadata" 文件夹下的特定路径,所以我最后得到了:

..metadata\FOLDERA..

..metadata\FOLDERB..

用 %(Directory)、%(RecursiveDir) 或 %(RelativeDir) 尝试了很多不同的事情,但找不到方法。

请客气点,我刚开始使用 MsBuild :)

在 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)')" />