如何使用Move MSBuild任务和通配符移动一堆文件?

时间:2012-10-05 11:00:16

标签: msbuild

我有一个文件夹,其文件名称以App_Web_开头,以.dll结尾。我不知道这些部分之间有什么,我不知道文件的数量。我需要MSBuild将这些文件移动到另一个文件夹中。

所以我写了这个:

<Move
    SourceFiles="c:\source\App_Web_*.dll"
    DestinationFolder="c:\target"
/>

但是当目标运行时,我得到以下输出:

error MSB3680: The source file "c:\source\App_Web_*.dll" does not exist.

文件绝对存在。

我做错了什么?如何移动文件?

1 个答案:

答案 0 :(得分:15)

您无法在任务参数中直接使用正则表达式。您需要创建一个包含要移动的文件列表的项目,并将其内容传递给任务:

<ItemGroup>
    <FilesToMove Include="c:\source\App_Web_*.dll"/>
</ItemGroup>

MSBuild会在将正则表达式传递给任务执行程序之前展开它。所以稍后在某个目标中,您可以调用Move任务:

<Target Name="Build">
    <Move
        SourceFiles="@(FilesToMove)"
        DestinationFolder="C:\target"
    />
</Target>