gpt4 book ai didi

msbuild - msbuild 可以解析转换产生的通配符表达式吗?

转载 作者:行者123 更新时间:2023-12-04 06:21:11 25 4
gpt4 key购买 nike

我希望下面的代码为 List 和 List2 生成相同的项目(我在搜索路径中有一个 cpp1 项目)。

<ItemGroup>
<src Include="cpp1"/>
<List Include="@(src -> '..\..\..\projects\**\%(identity).vcxproj')" />
<List2 Include="..\..\..\projects\**\cpp1.vcxproj" />
</ItemGroup>

但我得到的是:
List: ..\..\..\projects\**\cpp1.vcxproj
List2: ..\..\..\projects\common\cpp1\cpp1.vcxproj

所以看起来通配符表达式在转换结果时没有被扩展。我在这里缺少什么?

最佳答案

您可以获得额外的转换,但您需要添加一个额外的 item 数组,并且它需要一次添加每个潜在元素,并具有一个依赖目标。您还需要通过属性传递中间项目规范,

<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 完成后。

关于msbuild - msbuild 可以解析转换产生的通配符表达式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6537454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com