使用 MSBuild 从文件列表中复制目录结构

Copy directory structure from list of files using MSBuild

这比结构复制稍微复杂,因此是一个单独的问题。

我们有这个项目组,它是要复制的文件的集合。

<ItemGroup>
   <FilesToBeCopied Include="
       C:\SomeFolder\a.exe;
       C:\SomeFolder\d.dll;
       C:\SomeFolder\AFolder\*;
       C:\SomeFolder\e.dll;
       C:\SomeFolder\some.xml;>
   </FilesToBeCopied>
</ItemGroup>

我们需要一个复制任务,可能类似于下面这行

<Copy SourceFiles="@(FilesToBeCopied)" DestinationFolder="bin\%(FilesToBeCopied.RecursiveDir)" SkipUnchangedFiles="true"/>

因此最终需要的结构是:

somelocation\bin\a.exe; 
somelocation\bin\d.dll;
somelocation\bin\AFolder\*;
somelocation\bin\e.dll;
somelocation\bin\some.xml;

有办法实现吗? 因为上面的复制语句将所有文件复制到 bin\ 文件夹并且不会在 bin 中创建 AFolder* 结构。

事实证明,修复非常简单。只需在文件夹周围使用带有通配符 ** 的项目组。

<ItemGroup>
   <FilesToBeCopied Include="
       C:\SomeFolder\a.exe;
       C:\SomeFolder\d.dll;
       C:\SomeFolder\**\AFolder\**;
       C:\SomeFolder\e.dll;
       C:\SomeFolder\some.xml;>
   </FilesToBeCopied>
</ItemGroup>