gpt4 book ai didi

MSBuild过滤带有条件的文件的ItemGroup

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

这感觉很简单,但我无法让它工作。

我想要实现的只是嵌入资源的过滤列表。我尝试了各种方法,但似乎无法正确。

这是我认为正确的解决方案:

<ItemGroup>
<AllEmbeddedResources Include="@(EmbeddedResource)" Condition="$(FullPath.Contains('Change')"/>
</ItemGroup>

编辑...澄清一下,结果是没有条件的,列表是所有嵌入的资源,有条件的,组是空的。

我已经在目标内部和外部尝试过,我尝试在一个组中获取完整列表,然后在单独的组中进行过滤。我知道我只是误解了 msbuild 语法的一些基本部分,我似乎无法解决它。期待看到我的愚蠢错误!

最佳答案

在目标内部,这可以使用项目的批处理语法和使用 System.String.Copy 来完成。能够在字符串上调用实例函数的方法:

<Target Name="ListAllEmbeddedResources">
<ItemGroup>
<AllEmbeddedResources Include="@(EmbeddedResource)" Condition="$([System.String]::Copy(%(FullPath)).Contains('Change'))" />
</ItemGroup>
<Message Importance="high" Text="AllEmbeddedResources: %(AllEmbeddedResources.Identity)" />
</Target>

请注意,此语法仅在目标内部有效,在静态评估期间无效(直接在 <Project> 节点下的项目组)。

关于MSBuild过滤带有条件的文件的ItemGroup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45999486/

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