¿Cómo invocar el mismo objetivo msbuild dos veces?

Tengo el siguiente 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>

He eliminado los cuerpos de los objetivos para ahorrar espacio y porque son irrelevantes. Sin embargo, si alguien piensa que lo son, los incluiré.

De todos modos, como se puede ver, hay un objetivo:KillServerHosts, que deseo invocar dos veces y por un buen motivo. Una vez antes de la compilación, para asegurarse de que no se bloqueen los ensamblajes y la otra vez después de completar las pruebas para "limpiar la tabla".

Naturalmente, tratando de invocar el objetivo.KillServerHosts Dos veces no funciona, MSBuild se niega a construir el mismo objetivo dos veces. Entonces, estoy tratando de hacer trampa invocando al objetivo.KillServerHosts2. El problema es que a veces funciona y otras no.

Si corro elKillServerHosts El destino desde la línea de comandos siempre mata a los hosts del servidor relevantes, por lo que a este respecto funciona bien.

¿Algunas ideas?

Respuestas a la pregunta(1)

Su respuesta a la pregunta