在MSBuild中,可以直接定义一个PropertyGroup
,它取决于属性Foo
的值:
<PropertyGroup Conditional="'$(Foo)'=='Bar'" />
条件是否也可能依赖于任务参数?
例如,我想大致使用Link
task的SubSystem
参数的值:
<PropertyGroup Conditional="'$(Link/SubSystem)'=='Console'" />
但不知道是否可能,如果是,那么正确的语法是什么。
我对MSBuild很新,所以我很可能错过了一些东西。
答案 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>
...