Msbuild:根据文件内容过滤项目组

Msbuild: Filter itemgroup based on file contents

我需要根据文件的内容过滤项目组(包含文件名)。但是我无法让它工作。

  <ItemGroup>
      <FilteredFiles Include="@(AllFiles)" 
      Condition="$([System.IO.File]::ReadAllText(%(Identity)).Contains('searchText'))" />
  </ItemGroup>

我收到这个错误:

error MSB4184: The expression "[System.IO.File]::ReadAl lText(%(Identity))" cannot be evaluated. Could not find file 'C:\builds\git\RadarTemp%(Identity)'

有什么建议吗?

我认为最兼容的方法是使用中间项:

<ItemGroup>
  <AllFilesWithSearchResult Include="@(AllFiles)" 
    ContainsSearchText="$([System.IO.File]::ReadAllText('%(Identity)').Contains('searchText'))" />
  <FilteredFiles Include="@(AllFilesWithSearchResult->WithMetadataValue('ContainsSearchText','True'))"/>
</ItemGroup>