回应一个的ItemGroup的所有元素(echo All Elements of an ItemGr

2019-10-21 06:11发布

我有一个MSBuild ItemGroup ,我希望能够echo它在“后生成事件”。

然而,当我尝试的命令,如: echo My ItemGroup: @(Foo)

我得到的错误:

错误MSB4164:值“回声我的ItemGroup:@(美孚)”元数据“命令”中包含的项目列表表达式。 项目列表表达式是不允许在默认元数据值。

我不是很好用ItemGroup S作为呢。 有没有办法我只能echo的文件列表中Foo含?

Answer 1:

你会想是这样的:

<ItemGroup>
  <ForcedUsingFilesList Include="c:\path\to\files\*" />
</ItemGroup>
<Target Name="MyTarget">
  <PropertyGroup>
    <MyFiles>
        @(ForcedUsingFilesList->'%(FullPath)')
    </MyFiles>
  </PropertyGroup>
  <Exec>echo $(MyFiles)</Exec>
</Target>


Answer 2:

尝试%(Foo.Identity)来代替。 这将从列表打印只是一个项目,但会导致包含它的任务( Exec我想)遍历的项目。

如果还是不行,一定要与XML文件,而不是直接将IDE的工作,如果它逃跑的事情或其他代码,我们没有看到所说。

(后下)它可能会像这个帖子 ,他们感叹它不是简单的和需要XML的直接编辑反正。 因此,只要将其更改为Exec其中ITEMLIST表达出现在一个属性,而不是一个元数据定义任务。

这是写的PostBuildEvent更多的是向后兼容的东西,好一个使用的是AfterBuild目标,即“能够包含任意的MSBuild任务,其中包括一个或多个Exec任务......它不具有自定义UI在IDE ...在布赖恩Kretzler的书编辑为XML ...”提示43。



文章来源: echo All Elements of an ItemGroup