【发布时间】:2015-08-28 21:39:35
【问题描述】:
我正在尝试使用 MSBuild 从文本文件中读取文件列表,然后执行递归复制,将这些目录文件的内容复制到某个暂存区域,同时排除某些扩展名 em>(例如 .tmp 文件)
我已经设法使用 CreateItem 和 MSBuild 复制任务很容易地完成了上述大部分工作,无论我做什么 CreateItem 任务都会忽略我的 Exclude 参数:
<PropertyGroup>
<RootFolder>c:\temp</RootFolder>
<ExcludeFilter>*.tmp</ExcludeFilter>
<StagingDirectory>staging</StagingDirectory>
</PropertyGroup>
<ItemGroup>
<InputFile Include="MyFile.txt" />
</ItemGroup>
<Target Name="Build">
<ReadLinesFromFile File="@(InputFile)">
<Output ItemName="AllFolders" TaskParameter="Lines" />
</ReadLinesFromFile>
<CreateItem Include="$(RootFolder)\%(AllFolders.RelativeDir)**"
Exclude="$(ExcludeFilter)">
<Output ItemName="AllFiles" TaskParameter="Include" />
</CreateItem>
<Copy SourceFiles="@(AllFiles)"
DestinationFolder="$(StagingDirectory)\%(RecursiveDir)"
“MyFile.txt”的示例内容:
somedirectory\
someotherdirectory\
(即路径与 $(RootFolder) 相关 - 提及这一点是因为我在某处读到它可能相关)
我尝试了很多不同的排除过滤器组合,但我似乎永远无法让它正确排除我的 .tmp 文件 - 有没有任何方法可以在不借助 xcopy 的情况下使用 MSBuild 做到这一点?
【问题讨论】:
标签: msbuild createitem