我正在尝试创建一个MSBuild目标,以通过自定义可执行文件(例如convert.exe
)对进程进行处理。
目标会收到一个分号;
分隔的程序集列表为Input
,我想批量Exec
。
<Target Name="_CollectAssemblies" DependsOnTargets="ResolveReferences">
<ItemGroup>
<_Assemblies Include="@(ReferencePath);@(CopyLocalFiles);@(ResolvedDependencyFiles);@(ReferenceDependencyPaths);$(TargetPath)" />
</ItemGroup>
</Target>
<Target Name="_ConvertFiles" DependsOnTargets="_CollectAssemblies"
Inputs="@(_Assemblies)">
<Exec Command="echo @(_Assemblies)" />
<!--<Exec Command="$(MSBuildThisFileDirectory)convert.exe @(_Assemblies)" />-->
</Target>
Exec
命令输出echo Assembly1.dll;Assembly2.dll;Assembly3.dll;
。
如何转换Input
以便我可以单独处理每个程序集?
e.g。
echo Assembly1.dll
echo Assembly2.dll
echo Assembly3.dll
到目前为止,我已经尝试过:
<Target Name="_ConvertFiles" DependsOnTargets="_CollectAssemblies"
Inputs="@(_Assemblies)">
<ItemGroup>
<_SplitAssemblies Include="$(_Assemblies.Split(';'))" />
</ItemGroup>
<Exec Command="echo %(_SplitAssemblies.Identity)" />
</Target>
答案 0 :(得分:0)
回答我自己的问题。 MSBuild已经有了一种批处理项目的方式(正如我想的那样!)。
<Target Name="_ConvertFiles" DependsOnTargets="_CollectAssemblies"
Inputs="@(_Assemblies)">
<ItemGroup>
<_ConvertAssemblies Include="@(_Assemblies)"/>
</ItemGroup>
<Exec Command="$(MSBuildThisFileDirectory)convert.exe %(_ConvertAssemblies.Identity)" />
<Error Text="Stop" />
</Target>