2

我正在尝试根据另一个文件中的特定条件修改属性值。例如。我有一个调用目标文件的文件。

<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”并设置了正确的名称。我在这里想念什么?

4

2 回答 2

1

这与 MSBuild 属性的可访问性有关,具体取决于您使用的是DependsOnTargets还是CallTarget。使用DependsOnTargets时,您将对属性有更大的访问权限。这就是为什么您的示例在使用该方法时有效的原因。

有一篇现有的stackoverflow 文章谈到了这个问题。

于 2013-02-07T23:45:49.473 回答
0

使用“DependsOnTarget”属性而不是 callTarget 任务可以正常工作

于 2013-02-07T20:49:18.870 回答