首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过批处理另一个ItemGroup创建ItemGroup

通过批处理另一个ItemGroup创建ItemGroup
EN

Stack Overflow用户
提问于 2014-07-02 01:02:06
回答 1查看 931关注 0票数 1

我需要根据一组动态目录查找文件。下面是我的共享构建脚本:

代码语言:javascript
复制
<ItemGroup>
    <LookupDirs Include="F:\Dir1" />
    <LookupDirs Include="F:\Dir2" />
    <LookupDirs Include="F:\Dir3" />
    <LookupDirs Include="@(AdditionalLookupDirs)" />
</ItemGroup>

<!-- This doesn't work. -->
<ItemGroup>
    <Files Include="%(LookupDirs.Identity)\*.ext" />
</ItemGroup>

<Target Name="FilesByBatchingLookupDirs">
    <Message Text="Files: %(Files.Identity)" />

    <!-- This works. --->
    <ItemGroup>
        <TargetFiles Include="%(LookupDirs.Identity)\*.ext" />
    </ItemGroup>

    <Message Text="TargetFiles: %(TargetFiles.Identity)" />
</Target>

其目的是让使用构建脚本的人通过AdditionalLookupDirs项组指定自己的自定义查找目录,然后对查找目录进行批处理以找到一组文件。

如果Files项组位于目标之外,我更喜欢它,这样我就可以简单地创作,而不必记住调用创建Files项组的目标。不幸的是,这看起来是不可能的。我只能通过在Files中批处理LookupDirs项组来创建Target项组。

是否可以通过批处理在Target**?**之外的existin项目组创建一个新的项目组?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-02 09:43:37

不,我不相信你可以,但你可以使用InitialTargets。我通常有一个Init目标,因为不能在目标之外添加“全局”元数据,也不能进行更高级或延迟的数据输入。

代码语言:javascript
复制
<Project InitialTargets="Init;FilesByBatchingLookupDirs" DefaultTargets="Foo" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <ItemGroup>
        <LookupDir Include="$(ProgramW6432)\Microsoft SQL Server\100\Tools\Binn" />
        <LookupDir Include="$(ProgramW6432)\Microsoft SQL Server\110\Tools\Binn" />
        <LookupDir Include="$(ProgramW6432)\Microsoft SQL Server\120\Tools\Binn" />
    </ItemGroup>

    <Target Name="Init">
        <ItemGroup>
            <LookupDir>
                <Foo>Bar</Foo>
            </LookupDir>
        </ItemGroup>

        <Message Text="%(LookupDir.Identity) %(Foo)" />
    </Target>

    <Target Name="FilesByBatchingLookupDirs">
        <ItemGroup>
            <Files Include="%(LookupDir.FullPath)\**\*.exe" />
        </ItemGroup>
    </Target>

    <Target Name="Foo" DependsOnTargets="FilesByBatchingLookupDirs">
        <Message Text="%(Files.Identity)" />
    </Target>
</Project>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24521387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档