我有一个MSBuild ItemGroup,我希望能够在“构建后事件”中将其输出。
然而,当我尝试类似于:echo My ItemGroup: @(Foo)的命令时
我知道错误:
错误MSB4164:元数据“ItemGroup:@(Foo)”的值"echo My ItemGroup:@(Foo)“包含一个项列表表达式。默认元数据值不允许项列表表达式。
到目前为止,我还不太擅长ItemGroup。是否有一种方法只需echo Foo包含的文件列表?
发布于 2014-11-10 23:40:03
你会想要这样的:
<ItemGroup>
<ForcedUsingFilesList Include="c:\path\to\files\*" />
</ItemGroup>
<Target Name="MyTarget">
<PropertyGroup>
<MyFiles>
@(ForcedUsingFilesList->'%(FullPath)')
</MyFiles>
</PropertyGroup>
<Exec>echo $(MyFiles)</Exec>
</Target>发布于 2014-11-07 13:29:11
试一试%(Foo.Identity)。这将只从列表中打印一项,但会导致包含它的任务(我想是Exec )循环在这些项上。
如果这样做不起作用,请确保直接使用XML文件,而不是IDE,以防它转义或放入我们看不到的其他代码。
(稍后)它可能类似于this post,在这里他们哀叹它并不简单,无论如何都需要直接编辑XML。因此,只需将其更改为一个Exec任务,其中itemlist表达式出现在属性中,而不是元数据定义中。
据说PostBuildEvent更像是向后兼容的东西,最好使用的是AfterBuild目标,它“能够包含任意的MSBuild任务,包括一个或多个Exec任务…。它在IDE…中没有自定义UI将其编辑为XML…“布莱恩·克莱茨勒书中的提示43。
https://stackoverflow.com/questions/26801753
复制相似问题