2

別のファイルの特定の条件に応じてプロパティ値を変更しようとしています。例:ターゲットファイルを呼び出すファイルが1つあります。

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

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

変更する決定とターゲットを設定するアイテムグループを含むファイルが1つあります

<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」が呼び出され、正しい名前が設定されていることを確認しました。ここで何が欠けていますか?

4

2 に答える 2

1

これは、 DependsOnTargetsCallTargetのどちらを使用しているかに応じて、MSBuildプロパティのアクセシビリティと関係があります。DependsOnTargetsを使用すると、プロパティへのアクセスが向上します。そのため、そのメソッドを使用すると、例が機能します。

この問題について説明している既存のstackoverflowの記事があります。

于 2013-02-07T23:45:49.473 に答える
0

callTargetタスクの代わりに'DependsOnTarget'属性を使用して正常に動作します

于 2013-02-07T20:49:18.870 に答える