title: Transform a delimited string to array or ItemGroup
body: <p>I'm trying to create a MSBuild target to post-process assemblies through a custom executable (e.g. <code>convert.exe</code>). </p>
  
  <p>The target receives a semi-colon <code>;</code> separated list of assemblies as <code>Input</code> and I would like to batch <code>Exec</code>. </p>
  
  <pre><code>&lt;Target Name="_CollectAssemblies" DependsOnTargets="ResolveReferences"&gt;
      &lt;ItemGroup&gt;
          &lt;_Assemblies Include="@(ReferencePath);@(CopyLocalFiles);@(ResolvedDependencyFiles);@(ReferenceDependencyPaths);$(TargetPath)" /&gt;
      &lt;/ItemGroup&gt;
  &lt;/Target&gt;
  
  &lt;Target Name="_ConvertFiles" DependsOnTargets="_CollectAssemblies"
                  Inputs="@(_Assemblies)"&gt;
  
      &lt;Exec Command="echo @(_Assemblies)" /&gt;
      &lt;!--&lt;Exec Command="$(MSBuildThisFileDirectory)convert.exe @(_Assemblies)" /&gt;--&gt;
  
  &lt;/Target&gt;
  </code></pre>
  
  <p>The <code>Exec</code> command outputs, <code>echo Assembly1.dll;Assembly2.dll;Assembly3.dll;</code>. </p>
  
  <p>How do I transform the <code>Input</code> so that I can process each assembly individually?</p>
  
  <p>e.g.</p>
  
  <pre><code>echo Assembly1.dll
  echo Assembly2.dll
  echo Assembly3.dll
  </code></pre>
  
  <p>So far I have tried:</p>
  
  <pre><code>&lt;Target Name="_ConvertFiles" DependsOnTargets="_CollectAssemblies"
                  Inputs="@(_Assemblies)"&gt;
  
      &lt;ItemGroup&gt;
          &lt;_SplitAssemblies Include="$(_Assemblies.Split(';'))" /&gt;
      &lt;/ItemGroup&gt;
  
      &lt;Exec Command="echo %(_SplitAssemblies.Identity)" /&gt;
  
  &lt;/Target&gt;
  </code></pre>