感觉这很简单,但我无法让它工作。
我想要实现的只是一个过滤后的嵌入资源列表。我尝试了各种方法,但似乎无法正确解决。
这是我认为正确的解决方案:
<ItemGroup>
<AllEmbeddedResources Include="@(EmbeddedResource)" Condition="$(FullPath.Contains('Change')"/>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
编辑...澄清一下,结果是没有条件的,列表是所有嵌入的资源,有条件,组为空。
我已经在目标的内部和外部尝试过这个,并且我尝试在一个组中获取完整列表,然后在一个单独的组中进行过滤。我知道我只是误解了 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>
Run Code Online (Sandbox Code Playgroud)
请注意,此语法仅适用于目标内部,而不适用于静态评估(直接位于<Project>节点下的项目组)。
| 归档时间: |
|
| 查看次数: |
1675 次 |
| 最近记录: |