0

我需要根据文件的内容过滤 ItemGroup(包含文件名)。但我无法让它发挥作用。

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

我收到此错误:

错误 MSB4184:无法评估表达式“[System.IO.File]::ReadAll lText(%(Identity))”。找不到文件“C:\builds\git\RadarTemp%(Identity)”

有什么建议么?

4

1 回答 1

2

我相信最兼容的方法是使用中间项目:

<ItemGroup>
  <AllFilesWithSearchResult Include="@(AllFiles)" 
    ContainsSearchText="$([System.IO.File]::ReadAllText('%(Identity)').Contains('searchText'))" />
  <FilteredFiles Include="@(AllFilesWithSearchResult->WithMetadataValue('ContainsSearchText','True'))"/>
</ItemGroup>
于 2021-04-01T16:17:38.360 回答