【发布时间】:2018-02-10 11:23:06
【问题描述】:
这感觉很简单,但我无法让它工作。
我想要实现的只是嵌入资源的过滤列表。我尝试了各种方法,但似乎无法正确。
这是我认为正确的解决方案:
<ItemGroup>
<AllEmbeddedResources Include="@(EmbeddedResource)" Condition="$(FullPath.Contains('Change')"/>
</ItemGroup>
编辑... 澄清一下,结果是没有条件的,列表是所有嵌入的资源,有条件的,组是空的。
我在目标内部和外部都尝试过,我尝试在一个组中获取完整列表,然后在单独的组中进行过滤。我知道我只是误解了 msbuild 语法的一些基本部分,我似乎无法解决它。期待看到我的愚蠢错误!
【问题讨论】:
-
$用于引用属性。您想引用元数据,这是使用%完成的,所以对于初学者,您应该%(FullPath...。但我 100% 确定之前有人问过这个问题,所以只需四处搜索。 -
@stijn 所以我也这么认为,但是如果我使用这种语法 [Condition="%(FullPath).Contains('Change')"] 我收到错误 [error MSB4092: An unexpected token “。”在条件 "%(FullPath).Contains('Change')" 中的字符位置 12 处发现。] 已经提出了类似的问题,但是无论我做什么来遵循他们的示例,它似乎都不够接近。我将进行编辑以包含指向我尝试过的内容的链接...
-
@Adam 您需要在静态评估(项目全局)期间还是在目标内部执行此操作?在静态评估期间很难做到..
-
@MartinUllrich 目的是将文件列表传递给一个任务,然后验证其他一些事情(如果有任何区别,请补充内联任务)。我已经在包含任务的目标之外以及在任务之前的目标内部尝试过它。两者似乎都不起作用。
标签: msbuild