Ho il seguente script di msbuild:Come richiamare lo stesso target msbuild due volte?
<?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>
ho rimosso i corpi degli obiettivi per risparmiare spazio e perché sono irrilevanti. Tuttavia, se qualcuno pensa di essere, li includerò.
In ogni caso, come si può vedere, c'è un obiettivo - KillServerHosts
, che desidero invocare due volte e per una buona ragione. Una volta prima della compilazione, al fine di garantire che nessun assembly sia bloccato e l'altra volta dopo il completamento dei test per "pulire la tabella".
Naturalmente, il tentativo di invocare il target KillServerHosts
due volte non funziona, MSBuild si rifiuta di creare lo stesso target due volte. Quindi, sto cercando di imbrogliare invocando l'obiettivo KillServerHosts2
. Il problema è che a volte funziona e altre volte no.
Se eseguo il target KillServerHosts
dalla riga di comando, esso uccide sempre gli host del server rilevanti, quindi da questo punto di vista funziona correttamente.
Qualche idea?
L'attributo deve essere "Progetti", non "Progetto". In questo modo il tuo suggerimento funziona perfettamente, grazie! –
L'ho appena risolto. –