我有一个工作目录 folder1,folder2,folder3,folder4,.. folder10
我有一个包含项目(文件夹)名称的文本文件:
文件内容:
folder1
folder2
folder3
我想从文件中读取行,然后在维护目录结构时仅将这些文件夹复制到新文件夹。
mynewfolder{ folder1, folder2, folder3 }
将有多个文件用于输入。生成的工作目录(我将其称为父目录)将改变如下:
parent before msbuild:
parent{ folder1, folder2, .., folder10, mybuild.xml}
parent after msbuild:
parent{ folder1, folder2, .., folder10, mybuild.xml,
mynewfolder{folder1, folder2, folder3},
myothernewfolder{folder5, folder7, folder9} }
我能得到的最接近的是将copy1,folder2和folder3的所有内容复制到mynewfolder中(因此,结构丢失了)
我尝试使用FindInList,我尝试使用transform方法,我也尝试调整所有内容以匹配此示例: MSBuild - Comparing ItemGroups metadata
但我运气不好。
我只有大约5个小时的MSBuild经验,所以我现在有点迷失了。提前感谢您提供的任何帮助!
答案 0 :(得分:1)
这是你想要的吗?
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<Target Name="Sample">
<ItemGroup>
<_File Include="fileWithDirectorieNames.txt" />
</ItemGroup>
<PropertyGroup>
<_DestDir>d:\copy\</_DestDir>
</PropertyGroup>
<ReadLinesFromFile File="@(_File)" >
<Output TaskParameter="Lines" ItemName="ItemsFromFile"/>
</ReadLinesFromFile>
<ItemGroup>
<_files2Copy Include="%(ItemsFromFile.Identity)\**\*" >
<lastDir>%(ItemsFromFile.Filename)%(ItemFromFile.Extension)\</lastDir>
</_files2Copy>
</ItemGroup>
<Copy SourceFiles="@(_files2Copy)"
DestinationFiles="@(_files2Copy->'$(_DestDir)%(lastDir)%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>