Как установить значение свойства на основе элемента и использовать это свойство в качестве ввода функции свойства?

Я пытаюсь установить значение свойства на основе элемента, но свойство, кажется, не замечает элемент Например, мой код похож

<ItemGroup>
   <temp Include="test.txt"></temp>
</ItemGroup>

<PropertyGroup>
  <Name>%(temp.Identity)</Name>
  <Test>$([system.IO.File]::ReadAllText('$(Name)').Replace('ABC', '###'))</Test> 
</PropertyGroup>    

<Target Name="Write">
   <Message Text="$(Name)"/>
   <WriteLinesToFile File="%(temp.Filename).asl" Lines="$(Test)" Overwrite="true"/> 
</Target>

Но когда я запускаю это, он говорит, что не может прочитать%(temp.Identity) Я что-то пропустил?? Спасибо!

1 ответ

Решение

Свойства оцениваются перед любыми элементами. Переместите группу в целевой объект для отложенной оценки, ваш "Write" или общий InitialTargets.

См. Порядок оценки имущества и предметов.

Другие вопросы по тегам