Как вызвать одну и ту же цель msbuild дважды?

У меня есть следующий скрипт 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>

Я убрал тела целей, чтобы сэкономить место и потому что они не имеют значения. Однако, если кто-то думает, что это так, я включу их.

Во всяком случае, как видно, есть одна цель -KillServerHosts, который я хочу призвать дважды и по уважительной причине. Один раз перед сборкой, чтобы убедиться, что сборки не заблокированы, а второй раз после завершения тестов для «очистки таблицы».

Естественно, пытаясь вызвать цельKillServerHosts дважды не работает, MSBuild отказывается создавать одну и ту же цель дважды. Итак, я пытаюсь обмануть, вызывая цельKillServerHosts2, Проблема в том, что иногда это работает, а иногда нет.

Если я бегуKillServerHosts target из командной строки всегда убивает соответствующие хосты сервера, поэтому в этом отношении он работает нормально.

Есть идеи?

Ответы на вопрос(1)

Ваш ответ на вопрос