You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用MSBuild将通配符匹配文件作为单行参数执行exe

解决MSBuild中一次性传递所有匹配文件作为参数的问题

你当前写法里的%(SigFiles.FullPath)是MSBuild的元数据批处理语法,它会遍历SigFiles项组内的每个文件,单独执行一次Exec命令。要实现一次性传递所有文件,需改用项组展开语法@(),配合项转换拼接所有文件路径。

修改后的Target代码:

<Target Name="AfterBuild">
  <ItemGroup>
    <SigFiles Include="$(RootDir)tables\*.xml"/>
  </ItemGroup>
  <Exec Command="$(OutDir)app.exe --merge @(SigFiles->'%(FullPath)') -o $(OutDir)model.xml"/>
</Target>

关键说明:

  • @(SigFiles->'%(FullPath)')会将SigFiles项组中所有文件的FullPath元数据以空格分隔拼接成单个字符串,一次性传入命令行。
  • 若你的app.exe支持相对路径,也可简化为@(SigFiles)(默认展开项的Identity属性,即Include中定义的路径格式)。

扩展:自定义分隔符(可选)

如果需要用空格以外的分隔符(比如分号),可在展开时指定:

@(SigFiles->'%(FullPath)', ';')

内容的提问来源于stack exchange,提问作者Thierry Lelegard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 23:50:19