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>
我需要根据文件的内容过滤项目组(包含文件名)。但是我无法让它工作。
<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>