MSBuild条件取决于任务参数

时间:2010-04-16 11:40:02

标签: msbuild

在MSBuild中,可以直接定义一个PropertyGroup,它取决于属性Foo的值:

<PropertyGroup Conditional="'$(Foo)'=='Bar'" />

条件是否也可能依赖于任务参数?

例如,我想大致使用Link taskSubSystem参数的值:

<PropertyGroup Conditional="'$(Link/SubSystem)'=='Console'" />

但不知道是否可能,如果是,那么正确的语法是什么。

我对MSBuild很新,所以我很可能错过了一些东西。

1 个答案:

答案 0 :(得分:0)

我的机器上没有VC SDK,因此我无法尝试Link任务,但您可以尝试使用任务的<Output />

...
<PropertyGroup Condition="'$(LinkSubSystem)'=='Console'">
    <MyDependentProp>Whatever</MyDependentProp>
</PropertyGroup>

<Target Name="Linker">
    <Link Sources="@(LinkerSources)" SubSystem="Console">
        <Output TaskParameter="SubSystem" ItemName="LinkSubSystem" />
    </Link>
</Target>
...

第二种方法可能是使用Link Task SubSystem param本身的属性,只为你的PropertyGroup回收它。

...
<PropertyGroup>
    <LinkerSubSystem>Console</LinkerSubSystem>
</PropertyGroup>

<PropertyGroup Condition="'$(LinkerSubSystem)'=='Console'">
    <MyDependentProp>Whatever</MyDependentProp>
</PropertyGroup>

<Target Name="Linker">
    <Link Sources="@(LinkerSources)" SubSystem="$(LinkerSubSystem)" />
</Target>
...