我希望能够使用另一个属性的内容引用msbuild(3)属性。例如:
<PropertyGroup>
<SelectVariable>Test</SelectVariable>
<TestVariable>1</TestVariable>
<FullVariable>2</FullVariable>
</PropertyGroup>
<Message Text="Value $($(SelectVariable)Variable)"/>
在这种情况下,我想要输出TestVariable的内容(1)。这可能吗?
答案 0 :(得分:2)
我不相信这是可能的。但是,您可以使用ItemGroups实现类似的效果:
<PropertyGroup>
<SelectVariable>Test</SelectVariable>
</PropertyGroup>
<ItemGroup>
<Variable Include="1">
<Select>Test</Select>
</Variable>
<Variable Include="2">
<Select>Full</Select>
</Variable>
</ItemGroup>
<Message Text="@(Variable)"
Condition=" '%(Select)' == '$(SelectVariable)' " />
这有点笨重...
答案 1 :(得分:2)
当然可以这样做:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<SelectVariable>Test</SelectVariable>
<TestVariable>1</TestVariable>
<FullVariable>2</FullVariable>
</PropertyGroup>
<Target Name="Demo01">
<PropertyGroup>
<Value>$(SelectVariable)Variable</Value>
</PropertyGroup>
<Message Text="Value $(Value)"/>
</Target>
</Project>
结果如下图所示。
答案 2 :(得分:1)
你可以使用<Choose>
task来实现类似的东西,但是(正如彼得所说的那样)可能与你想要短暂而精辟的东西有一段距离。
也许psake就是答案 - 在嵌套表达式和括号时没有这样的任意和微不足道的限制:P