Jak dwukrotnie wywołać ten sam cel msbuild?

Mam następujący skrypt 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>

Usunąłem ciała celów, aby zaoszczędzić miejsce i ponieważ są one nieistotne. Jeśli jednak ktoś myśli, że tak jest, uwzględnię je.

W każdym razie, jak widać, jest jeden cel -KillServerHosts, które chcę wywołać dwa razy i nie bez powodu. Raz przed budową, aby upewnić się, że żadne zespoły nie są zablokowane, a innym razem po zakończeniu testów „wyczyścić stół”.

Naturalnie, próbując wywołać celKillServerHosts dwa razy nie działa, MSBuild odmawia dwukrotnego zbudowania tego samego celu. Więc próbuję oszukać, wywołując celKillServerHosts2. Problem polega na tym, że czasami działa, a czasami nie.

Jeśli uruchomięKillServerHosts cel z linii poleceń zawsze zabija odpowiednie hosty serwera, więc pod tym względem działa dobrze.

Jakieś pomysły?

questionAnswers(1)

yourAnswerToTheQuestion