2013-02-06 48 views
2

我想修改屬性值取決於另一個文件中的某些條件。 例如。 我有一個文件調用目標文件。msbuild,覆蓋屬性值在不同的文件

<Import Project="sample.vcxproj"/> 
<PropertyGroup> 
    <Gender>Boy</Gender> 
    <Search>UNIQUE_NAME</Search> 
</PropertyGroup> 

<Target Name="Build"> 
    <callTarget Targets="SetName"/> 
    <Message Text="$(Person)"/> 
</Target> 

我有一個文件,其中包括項目組決定和目標是修改

<ItemGroup> 
    <Name Include="UNIQUE_NAME"> 
     <Boy>DAVID</Boy> 
     <Girl>REBECCA</Girl> 
    </NAME> 
</ItemGroup> 

<Target Name="SetName"> 
    <PropertyGroup Condition="'$(Search)'=='@(Name)'"> 
     <Person>@(Name->'%($(Gender))')</Person> 
    </PropertyGroup> 
</target> 

但是當我打印「人」,我得到空字符串。我檢查了'SetName'被調用並設置了正確的名稱。 我在這裏錯過了什麼?

回答

1

這有做的MSBuild屬性的可訪問性,這取決於您是否使用DependsOnTargetsCallTarget工作正常。當使用DependsOnTargets時,您將擁有更大的物業訪問權限。這就是您的示例在使用該方法時的原因。

有一個現有的stackoverflow article說這個問題。

+0

謝謝你的信息! –

0

它使用「DependsOnTarget」 ATTRIB,而不是callTarget任務