J'ai le script msbuild suivant:Comment invoquer deux fois la même cible 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>
J'ai enlevé les corps des cibles pour économiser l'espace et parce qu'ils ne sont pas pertinents. Cependant, si quelqu'un pense qu'ils le sont, je les inclurai.
Quoi qu'il en soit, comme on peut le voir, il y a une cible - KillServerHosts
, que je souhaite invoquer deux fois et pour une bonne raison. Une fois avant la construction, afin de s'assurer qu'aucun assemblage ne soit verrouillé et que l'autre fois après les tests se termine pour "nettoyer la table".
Naturellement, essayer d'appeler la cible KillServerHosts
deux fois ne fonctionne pas, MSBuild refuse de créer deux fois la même cible. Donc, j'essaie de tricher en invoquant la cible KillServerHosts2
. Le problème est que cela fonctionne parfois et parfois non.
Si j'exécute la cible KillServerHosts
à partir de la ligne de commande, elle tue toujours les hôtes du serveur concernés, donc à cet égard, cela fonctionne correctement.
Des idées?
L'attribut doit être 'Projets', pas 'Projet'. De cette façon, votre suggestion fonctionne parfaitement, merci! –
Je viens de le réparer. –