Вы можете получить дополнительное преобразование, но вам нужно добавить дополнительный массив элементов, и для этого нужно, чтобы каждый потенциальный элемент добавлялся по одному за раз с зависимой целью.Вам также нужно передать спецификацию промежуточного элемента через свойство,
<ItemGroup>
<src Include="cpp1"/>
<List1a Include="@(src -> '..\..\..\projects\**\%(Identity).vcxproj')" />
<List2 Include="..\..\..\projects\**\cpp1.vcxproj" />
</ItemGroup>
<Target Name="TransformWithWildcards"
Outputs="%(List1a.Identity)">
<PropertyGroup>
<_ThisList1a>@(List1a)</_ThisList1a>
</PropertyGroup>
<ItemGroup>
<List1b Include="$(_ThisList1a)" />
</ItemGroup>
</Target>
<Target Name="Transform"
DependsOnTargets="TransformWithWildcards">
<Message Text="1a. %(List1a.Identity)" />
<Message Text="1b. %(List1b.Identity)" />
<Message Text="2. %(List2.Identity)" />
</Target>
@ (List1a) совпадает с исходным @ (List), а @ (List1b) содержит ожидаемые результаты после TransformWithWildcardsзавершается.