Entwickler-Ecke

Programmierwerkzeuge - MSBuild: Zwei Setup-Targets


Nersgatt - Mi 13.01.16 10:40
Titel: MSBuild: Zwei Setup-Targets
Moin!

Ich verwende MSBuild um meine Projekt automatisch zu erzeugen und davon ein Setups zu erstellen.
Da ich einmal ein interaktives Setup benötige und eine Zip-Installation (als nur ein Zipfile mit den Programmdateien), sieht mein Buildskript an der Stelle so aus:

XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build;Setup" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
[...]  
    <Target Name="Setup">
        <Exec Command="iscc.exe install.iss" />
    </Target>  

    <Target Name="Setup">
        <Exec Command="CreateZipInstall.bat" />
    </Target>  
  
</Project>


Ich habe also 2x Target Name="Setup" im Skript. Allerdings wird davon immer nur der 2. Eintrag ausgeführt. Der erste Eintrag wird einfach ignoriert.
Kann mir jemand erklären, warum das so ist?

Es stört mich zwar nicht sonderlich, da ich MSBuild sowieso innerhalb eines Batchfiles aufrufe. Vorher setze ich noch entsprechende Pfade. So hab ich die Erstellung des Zipfiles einfach aus dem Buildskript rausgenommen und in das Batchfile verschoben.
Es würde ich aber dennoch interessieren, ob es dafür eine Lösung gibt.

Danke!

Moderiert von user profile iconMartok: Code- durch XML-Tags ersetzt


Ralf Jansen - Mi 13.01.16 10:51

Habe noch nie versucht Targets mit gleichem Namen zu benutzen weißt also nicht warum es sich wie dann verhält. Aber wieso sind es überhaupt 2.Target Tags? Wenn du immer willst das beides gemacht wird sollten die beiden Exec Commands einfach in einem Target ausgeführt werden.


Nersgatt - Mi 13.01.16 10:56

Na klar, manchmal ist die offensichtliche Lösung so weit weg. :D
Wenn ich beides in einem Target ausführe, klappt es einwandfrei. Vielen Dank!


Ralf Kaiser - Sa 16.01.16 15:42

Man könnte auch zwei verschiedene Targets anlegen und über das Attribut "DependsOnTarget" dafür sorgen, dass sie in der richtigen Reihenfolge ausgeführt werden.

(Target Element (MSBuild) [https://msdn.microsoft.com/de-de/library/t50z2hka.aspx])

Moderiert von user profile iconTh69: URL-Titel hinzugefügt.