【问题标题】:Transform a delimited string to array or ItemGroup将分隔字符串转换为数组或 ItemGroup
【发布时间】:2015-05-01 05:58:03
【问题描述】:

我正在尝试创建一个 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 以便我可以单独处理每个程序集?

例如

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>

【问题讨论】:

    标签: msbuild msbuild-task


    【解决方案1】:

    回答我自己的问题。 MSBuild 已经有了批处理项目的方法(正如我所想的那样!)。

    <Target Name="_ConvertFiles" DependsOnTargets="_CollectAssemblies"
                    Inputs="@(_Assemblies)">
    
      <ItemGroup>
          <_ConvertAssemblies Include="@(_Assemblies)"/>
      </ItemGroup>
    
      <Exec Command="$(MSBuildThisFileDirectory)convert.exe %(_ConvertAssemblies.Identity)" />
    
      <Error Text="Stop" />
    
    </Target>
    

    【讨论】:

      猜你喜欢
      • 2011-12-15
      • 2019-08-23
      • 2012-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-18
      • 2014-07-01
      相关资源
      最近更新 更多