MSBuild:单步执行数组

时间:2015-03-12 15:05:41

标签: arrays loops msbuild

我有一个执行目录列表的脚本,并首先将其放入最新的条目中。然后,我想逐步查看该目录中的文件,如果它存在,则停止,但如果它没有,则转到该数组的下一个项目。 C:\ Foo

下有许多目录

我该怎么做?

<PropertyGroup>
    <RootDir>C:\Foo</RootDir>
    <OutputFile>C:\Output.txt</OutputFile>
</PropertyGroup>

<Target Name="Generate">
    <Exec Command="dir &quot;$(RootDir)&quot; /ad /o-d /b > &quot;$(OutputFile)&quot;" />
    <ReadLinesFromFile File="$(OutputFile)">
        <Output TaskParameter="Lines" ItemName="OutputLines"/>
    </ReadLinesFromFile>
    <Message Text="@(OutputLines->'%(Identity)', '%0a%0d')" />
</Target>

所以OutputLines有数组,我想从数组的第一个位置开始(即C:\ Foo \ Dir1)并查找文件abc.zip。如果存在,则将该文件复制到其他位置,如果不存在则转到下一个项目(即C:\ Foo \ Dir2)。

感谢。任何帮助表示赞赏。对MSBuild来说还是一个新手。

1 个答案:

答案 0 :(得分:0)

您已经创建了一个项目列表,这是一种肯定的数组。但是,您不在MSBuild中处理数组(或项目列表),就像编程时一样。相反,尝试使用通配符专门查找您想要的信息,如下所示:

<!-- This replaces the Exec and the ReadLinesFromFile tasks in your target -->
<ItemGroup>
  <OutputLines Include="$(RootDir)**\abc.zip"/>
</ItemGroup>

然后使用您在新项目列表中发现的项目进行处理。