12

我有一个文件夹,其中的文件的名称以 . 开头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.

文件肯定在那里。

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

4

1 回答 1

19

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

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

MSBuild 将扩展正则表达式,然后将其传递给任务执行器。所以稍后在某些目标中,您可能会调用Move任务:

<Target Name="Build">
    <Move
        SourceFiles="@(FilesToMove)"
        DestinationFolder="C:\target"
    />
</Target>
于 2012-10-05T12:33:10.977 回答