Вот скрипт MSBuild:Реферирование хорошо известный метаданные элемента внутри определения метаданных в ItemGroup в мишени
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="AugmentItemGroup" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<ItemGroup>
<ItmGrp Include="File1.txt">
<Dest>dest\%(FileName)%(Extension)</Dest>
</ItmGrp>
<ItmGrp Include="File2.txt">
<Dest>dest\%(FileName)%(Extension)</Dest>
</ItmGrp>
<ItmGrp Include="File3.txt">
<Dest>dest\%(FileName)%(Extension)</Dest>
</ItmGrp>
</ItemGroup>
<Target Name="AugmentItemGroup">
<ItemGroup>
<ItmGrp Include="File4.txt">
<Dest>dest\%(FileName)%(Extension)</Dest>
</ItmGrp>
</ItemGroup>
<Message Text="%(ItmGrp.FullPath) to %(ItmGrp.Dest)" />
</Target>
</Project>
Выход я бы ожидать от него есть:
D:\t\File1.txt to dest\File1.txt
D:\t\File2.txt to dest\File2.txt
D:\t\File3.txt to dest\File3.txt
D:\t\File4.txt to dest\File4.txt
Но результат :
D:\t\File1.txt to dest\File1.txt
D:\t\File2.txt to dest\File2.txt
D:\t\File3.txt to dest\File3.txt
D:\t\File4.txt to dest\File1.txt
D:\t\File4.txt to dest\File2.txt
D:\t\File4.txt to dest\File3.txt
Почему поведение %(FileName)%(Extension)
хорошо известный справочник метаданных ce отличается, когда ItemGroup находится внутри цели?
Возможно ли получить поведение «снаружи цели» внутри цели?
Проблема с этим подходом для меня заключается в том, что часть «dest» будет отличаться от элемента к элементу, поэтому одно и то же определение не может применяться ко всем элементам в группе. – axk
Хорошо, попробуйте второй подход выше. Обратите внимание на использование Dest vs. _Dest –
Это помогло мне с совершенно другой задачей, спасибо. Кроме того, для ссылки на книгу я собираюсь ее купить. –