msbuild - 过滤现有项目组,使其仅包含符合某些条件的文件

标签 msbuild filtering

如何根据特定条件(例如文件扩展名或项目的元数据)过滤现有 ItemGroup?

在此示例中,我将使用文件扩展名。我正在尝试过滤 VS 定义的“无”ItemGroup,以便我的目标可以对给定扩展名的所有文件进行操作。

例如,可以定义以下内容:

<ItemGroup>
    <None Include="..\file1.ext" />
    <None Include="..\file2.ext" />
    <None Include="..\file.ext2" />
    <None Include="..\file.ext3" />
    <None Include="..\file.ext4" />
</ItemGroup>

我想过滤上面的“无”ItemGroup,使其仅包含 ext 扩展名。请注意,我不想指定要排除的所有扩展,因为它们会因项目而异,并且我正在尝试使我的目标无需修改即可重用。

我尝试在目标中添加条件:

<Target Name="Test">
    <ItemGroup>
        <Filtered
            Include="@(None)"
            Condition="'%(Extension)' == 'ext'"
            />
    </ItemGroup>
    <Message Text="None: '%(None.Identity)'"/>
    <Message Text="Filtered: '%(Filtered.Identity)'"/>
</Target>

但遗憾的是,它不起作用。我得到以下输出:

Test:
  None: '..\file1.ext'
  None: '..\file2.ext'
  None: '..\file.ext2'
  None: '..\file.ext3'
  None: '..\file.ext4'
  Filtered: ''

最佳答案

<ItemGroup>
  <Filtered Include="@(None)" Condition="'%(Extension)' == '.ext'" />
</ItemGroup>

关于msbuild - 过滤现有项目组,使其仅包含符合某些条件的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12222863/

相关文章:

c# - Visual Studio Publish, “PublishTelemetry” 任务无法加载

msbuild - 如何在 CentOs 上安装 msbuild

QTableView 使用 QSortFilterProxyModel 过滤(分组过滤器)

javascript - 有没有办法过滤 Google Chrome 控制台中的输出?

javascript - 对数据库中的数据设置多个过滤器

visual-studio-2010 - 非网络 app.config 的 SlowCheetah 转换

msbuild - 使用MSBuild从命令行生成ClickOnce部署的setup.exe

msbuild - 未为项目设置 OutputPath 属性

javascript - AngularJS - 如果包含字符串,则删除 ng-repeat 项

jquery - 如何在网格infragistic jquery中过滤日期格式(dd.MM.yyyy)的日期?