我可以创建一个属性节点集合并将它们作为一个整体引用吗?

时间:2013-07-24 12:51:49

标签: msbuild

我知道我可以做以下事情

<PropertyGroup>
    <Foo>Bar</Foo>
    <Foo1>Bar1</Foo1>
    <Foos>$(Foo) $(foo1)</Foos>
</PropertyGroup>

<Target Name="Def">
    <Message Text="$(Foos)"/>
</Target>

并获取Bar Bar1

但是,如果PropertyGroup中有许多属性,则这种扩展性不会很好。

有没有办法引用PropertyGroup或其他某个节点并让MSBuild为您做出艰苦的工作?

我知道PropertyGroup元素不支持它,但想象能够做到

<PropertyGroup Name="Bob">
    <Foo>Bar</Foo>
    <Foo1>Bar 1</Foo1>
</PropertyGroup>

<Target Name="Def">
    <Message Text="$(Bob)"/>
</Target>

并获取Bar Bar 1

1 个答案:

答案 0 :(得分:1)

这可以使用ItemGroup和@()表示法来实现。

示例

<ItemGroup>
    <Foo Include="Bar"/>
    <Foo Include="Bar1"/>
</ItemGroup>

<Message Text="@(Foo)"/>

打印Bar;Bar1

注意默认情况下@符号以分号连接项目。我们可以通过第二个参数更改为@(..)

<ItemGroup>
    <Foo Include="Bar"/>
    <Foo Include="Bar1"/>
</ItemGroup>

<Message Text="@(Foo, ' ')"/>

打印Bar Bar1