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" вызывается и правильное имя установлено. Что мне здесь не хватает?
2 ответа
Это связано с доступностью свойств MSBuild в зависимости от того, используете ли вы DependsOnTargets или CallTarget. При использовании DependsOnTargets у вас будет больший доступ к свойствам. Вот почему ваш пример работает при использовании этого метода.
Существует существующая статья stackru, в которой говорится об этой проблеме.
Он отлично работает, используя атрибут "DependsOnTarget" вместо задачи callTarget