Como invocar o mesmo alvo msbuild duas vezes?

Eu tenho o seguinte script msbuild:

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
         DefaultTargets="All">

  <PropertyGroup>
  ...
  </PropertyGroup>

  <UsingTask AssemblyFile="$(GallioTaskPath)" TaskName="Gallio.MSBuildTasks.Gallio" />
  <Import Project="$(MSBuildCommunityTasksPath)\MSBuild.Community.Tasks.Targets" />

  <ItemGroup>
  ...
  </ItemGroup>

  <Target Name="CheckServerHostsItemGroup"
          Condition="'$(NoServerHosts)' != True">
  ...
  </Target>

  <Target Name="RunServerHosts" DependsOnTargets="CheckServerHostsItemGroup"
          Condition="'$(NoServerHosts)' != True">
  ...
  </Target>

  <Target Name="KillServerHosts" DependsOnTargets="CheckServerHostsItemGroup"
          Condition="'$(NoServerHosts)' != True">
    ...
  </Target>

  <Target Name="KillServerHosts2"
          Condition="'$(NoServerHosts)' != True">
    <MSBuild Projects="$(MSBuildProjectFile)" Targets="KillServerHosts" Properties="Configuration=$(Configuration)" />
  </Target>

  <Target Name="All" DependsOnTargets="Build;RunServerHosts;Test;KillServerHosts2">
    <OnError ExecuteTargets="KillServerHosts2" />
  </Target>

  <Target Name="Test">
    ...
    <Error Text="Tests execution failed with exit code $(ExitCode)" Condition="'$(ExitCode)' != 0" />
  </Target>

  <Target Name="CheckSolutionsItemGroup">
  ...
  </Target>

  <Target Name="Build" DependsOnTargets="CheckSolutionsItemGroup;KillServerHosts">
  ...
  </Target>

  <Target Name="Clean" DependsOnTargets="CheckSolutionsItemGroup;KillServerHosts">
  ...
  </Target>

</Project>

Eu removi os corpos dos alvos para economizar espaço e porque eles são irrelevantes. No entanto, se alguém pensa que eles são, vou incluí-los.

De qualquer forma, como se pode ver, existe um alvo -KillServerHostsque desejo invocar duas vezes e por um bom motivo. Uma vez antes da compilação, para garantir que nenhum assembly seja bloqueado e o outro tempo após os testes, conclua para "limpar a tabela".

Naturalmente, tentando invocar o alvoKillServerHosts duas vezes não funciona, o MSBuild se recusa a construir o mesmo destino duas vezes. Então, eu estou tentando enganar invocando o alvoKillServerHosts2. O problema é que às vezes funciona e às vezes não.

Se eu corro oKillServerHosts O alvo da linha de comando sempre mata os hosts relevantes do servidor, portanto, a partir deste ponto, ele funciona bem.

Alguma ideia?

questionAnswers(1)

yourAnswerToTheQuestion