使用 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>
这比结构复制稍微复杂,因此是一个单独的问题。
我们有这个项目组,它是要复制的文件的集合。
<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>