如何用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
相关产品推荐
相关产品推荐

