Msbuild:基于文件内容筛选项目组
我需要根据文件内容过滤一个项目组(包含文件名)。但我不能让它工作Msbuild:基于文件内容筛选项目组,msbuild,itemgroup,Msbuild,Itemgroup,我需要根据文件内容过滤一个项目组(包含文件名)。但我不能让它工作 <ItemGroup> <FilteredFiles Include="@(AllFiles)" Condition="$([System.IO.File]::ReadAllText(%(Identity)).Contains('searchText'))" /> </ItemGroup> 我得到这个错误: 错误MS
<ItemGroup>
<FilteredFiles Include="@(AllFiles)"
Condition="$([System.IO.File]::ReadAllText(%(Identity)).Contains('searchText'))" />
</ItemGroup>
我得到这个错误:
错误MSB4184:表达式“[System.IO.File]::ReadAl”
无法计算lText(%(标识))“。找不到文件
'C:\builds\git\RadarTemp%(标识)'
有什么建议吗?我认为最合适的方法是使用中间项:
<ItemGroup>
<AllFilesWithSearchResult Include="@(AllFiles)"
ContainsSearchText="$([System.IO.File]::ReadAllText('%(Identity)').Contains('searchText'))" />
<FilteredFiles Include="@(AllFilesWithSearchResult->WithMetadataValue('ContainsSearchText','True'))"/>
</ItemGroup>
效果非常好-谢谢!所以我可以在属性中添加随机的“元数据”(如果这是正确的术语)?以前从未见过。是的,您可以添加元数据和元数据,因为几年前为.NET核心MSbuild项目添加了属性(而不是子元素)