我正在尝试根据另一个文件中的某些条件修改属性值。 对于前者 我有一个文件调用目标文件。
<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>
但是当我打印'Person'时,我得到空字符串。我检查了'SetName'被调用并且设置了正确的名称。 我在这里缺少什么?
答案 0 :(得分:1)
这与MSBuild属性的可访问性有关,具体取决于您使用的是 DependsOnTargets 还是 CallTarget 。使用 DependsOnTargets 时,您可以更好地访问属性。这就是为什么您的示例在使用该方法时有效。
现有stackoverflow article可以解决此问题。
答案 1 :(得分:0)
使用'DependsOnTarget'attrib而不是callTarget任务可以正常工作