Ich habe folgendes msbuild Skript:Wie die gleiche msbuild Ziel zweimal aufzurufen?
<?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>
ich die Leichen der Ziele entfernt um Platz zu sparen und weil sie nicht relevant sind. Wenn jemand jedoch denkt, dass sie es sind, werde ich sie einschließen.
Wie auch immer, wie man sehen kann, ist es ein Ziel - KillServerHosts
, das wünsche ich zweimal und für einen guten Grund berufen. Einmal vor dem Build, um keine Versammlungen, um sicherzustellen, sind gesperrt und das andere Mal nach den Tests abgeschlossen „Bereinigung der Tabelle“.
natürlich versuchen, das Ziel zu berufen KillServerHosts
zweimal nicht funktioniert, MSBuild weigert zweimal das gleiche Ziel zu bauen. Also versuche ich zu betrügen, indem ich das Ziel KillServerHosts2
anrufe. Das Problem ist, dass es manchmal funktioniert und manchmal nicht.
Wenn ich das KillServerHosts
Ziel von der Kommandozeile aus ausführen, tötet es immer die relevanten Server-Hosts, von daher funktioniert es gut.
Irgendwelche Ideen?
Das Attribut sollte "Projekte" sein, nicht "Projekt". So funktioniert dein Vorschlag perfekt, danke! –
Ich habe es gerade behoben. –