2010-04-16 21 views
2

在MSBuild的是簡單的定義,也就是說,一個PropertyGroup它依賴於一個屬性Foo值:的MSBuild條件語句參數

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

是否也可以爲有條件的取決於任務參數?

例如,我想大致使用Link taskSubSystem參數的值是這樣的:

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

,但不知道是否有可能,如果是,什麼正確的語法是。

雖然我對MSBuild很新,但是我完全有可能錯過了一些東西。

+0

你在那裏得到了一個錯字:'條件'不是'有條件的' – Filburt 2010-04-17 20:26:53

+0

我的答案是否對你有用? – Filburt 2010-04-22 21:37:21

回答

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> 
... 

第二種方法可能是使用鏈接任務子系統參數本身的屬性只是爲您的PropertyGroup回收它。

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

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

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