MSBuild – Leichte Kost

Wie bereits angekündigt, beginnt mit diesem Post eine kleine MSBuild Serie. Ziel der Serie ist es einfach und praktisch die Möglichkeiten von MSBuild aufzuzeigen.

Die MSBuild Konfigurationsdateien

Wie bereits erwähnt ist jede VisualStudio Projektdatei eine MSBuild Konfigurationsdatei, die alle wichtigen Einstellungen und Informationen für den Buildvorgang beinhaltet. Visual Studio ist in vielen Bereichen einfach nur eine nette UI, die einem das Schreiben von MSBuild Konfigurationsdateien abnimmt.

Hello Build World

Als einfaches Beispiel für diesen Post möchte ich eine kleine “Hello Build World” Projektdatei erstellen. Hierzu werden lediglich einfache und leicht verständliche MSBuild Einstellungen verwendet.

Das Rootelement

Wie jedes XML Dokument hat auch eine MSBuild Konfigurationsdatei ein XML-Rootelement, das “Project”-Node. Das “Project”-Node bildet demnach den Container für alle Einstellungen und Anweisungen für einen Buildvorgang. Wie sollte es anders sein erhält der ambitionierte Entwickler IntelliSense im XML Dokument sobald er den XML-Namespace des Schemas eingebunden hat. Listing 1 zeigt das Root-Element der HelloBuildWorld.proj

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 <!-- some content -->
</Project>

 

MSBuild Targets und MSBuild Tasks

Nachdem das Rootelement definiert wurde, geht es direkt ans eingemachte, die MSBuild Targets. Buid-Targets stellen einen Container für mehrere atomare Schritte dar. Ein solcher Schritt wird in MSBuild als “Task” bezeichnet. MSBuild liefert eine Reihe von Tasks mit aus, die direkt durch die XML-Konfiguration verwendet und parametrisiert werden können. Natürlich hat man als .NET Entwickler auch die Möglichkeit eigene, spezielle Tasks zu entwickeln um diese dann in Build-Files zu verwenden. - Doch zunächst zurück zum Target.

Ein Target hat in seiner einfachsten Form lediglich das Attribut “Name” gefüllt und verfügt über einen MSBuild Task (ok, es könnte auch keinen Task enthalten, aber würde das Sinn machen?!) Listing 2 zeigt ein MSBuild-Target in der einfachsten Form mit dem Namen “HelloBuildWorld”

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Target Name="HelloBuildWorld">
 
  </Target>
</Project>

 

Damit unser MSBuild-File nun auch über etwas Logik verfügt, erweitern wir es noch um einen Task der für die Ausgabe einer Message verantwortlich ist, den “Message”-Task.

Der MSBuild – Message Task

Wie der Name bereits sagt, ist der Message Task dafür verantwortlich einen beliebigen Text in den Output zu schreiben. Der Message Task verfügt auch lediglich über zwei Properties

  • Text ( Die Meldung die angezeigt werden soll)
    • Datentyp: String
  • Importance (Der Schweregrad der Meldung)
    • Datentyp: String
    • gültige Werte (“high”, “normal”, “low”)
    • Standardwert “normal”

Erweitert sieht das vorhandene HelloBuildWorld.proj nun so aus

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Target Name="HelloBuildWorld">
    <Message Text="Hello MSBuild world!" Importance="normal"/>
  </Target>
</Project>

 

MSBuild Files – Die Ausführung eines Build Scripts

Ein erstelltes MSBuild-File kann man, wie sollte es anders sein? Durch msbuild.exe, die eigentliche Build-Engine. Die MSBuild.exe kann man einfach über die Visual Studio Command-Line starten, hier ist das entsprechende Verzeichnis, in dem sich die Anwendung befindet, in der Path-Variable angegeben.

MSBuild.exe benötigt in unserem Fall zwei Parameter

  1. Den Pfad zur HelloBuildWorld.proj Datei
  2. Den Namen des MSBuild-Targets, welches ausgeführt werden soll

Der Aufruf unsers Beispiels sieht also so aus

msbuild HelloBuildWorld.proj /t:HelloBuildWorld

Der Aufruf kann optional noch durch den Parameter “nologo” erweitert werden, damit der Microsoft Header in der Ausgabe wegfällt. Unser Build-File generiert diesen Output

HelloMSBuildWorld

Neben den einigen Rahmeninformationen, die eigentlich selbsterklärend sind, findet man in Zeile vier die zuvor erstellte Message.

 

Whats next?

Nun im nächsten Teil werde ich das “HelloBuildWorldReloaded” MSBuild-File zeigen, welches etwas dynamischere Inhalte visualisieren kann. Außerdem kommen noch weitere Build-Tasks….

 

DotNetKicks-DE Image
Published Dienstag, 9. Februar 2010 19:00 von ThorstenHans
Abgelegt unter: ,

Kommentare

# MSBuild – Jenseits von HelloBuildWorld

Dienstag, 9. Februar 2010 23:00 von .NET rocks

Im ersten Teil der MSBuild Artikelserie wurden verschiedene Basics der MSBuild Thematik erklärt. In diesem

# MSBuild Items – Die Planeten im Universum

Mittwoch, 10. Februar 2010 08:47 von .NET rocks

Im vierten Teil der MSBuild Serie möchte die MSBuild Items vorstellen, die einen weiteren zentralen Bestandteil

# MSBuild Conditions - Die Wurmlöcher des Universums

Freitag, 12. Februar 2010 23:12 von .NET rocks

Im sechsten Teil der MSBuild Serie geht es um MSBuild Conditions, es sind die Wurmlöcher des MSBuild

# MSBuild Tasks – Die Umlaufbahnen im Universum

Freitag, 12. Februar 2010 23:13 von .NET rocks

Im fünften Teil der MSBuild Serie möchte die MSBuild Tasks vorstellen, Tasks verwenden hauptsächlich

# Das MSBuild Universum

Montag, 15. Februar 2010 08:22 von .NET rocks

Eine kurze Übersicht aller Artikel der MSBuild Serie &quot;Das MSBuild Universum&quot; MSBuild – Ein

# MSBuild Targets - Die Asteroiden im MSBuild Universum nutzen

Mittwoch, 17. Februar 2010 12:24 von .NET rocks

Im achten Teil der MSBuild Serie “Das MSBuild Universum” möchte ich nochmal etwas detaillierter auf MSBuild

# MSBuild Logger - Reisen im Universum sollte man protokollieren

Donnerstag, 18. Februar 2010 16:00 von .NET rocks

Im neunten Teil der Serie “Das MSBuild Universum” möchte ich MSBuild Logger vorstellen und zeigen was

# MSBuild Batching und MSBuild Choose – Die Flugbahnen von Körpern im Universum beeinflussen

Montag, 22. Februar 2010 21:51 von .NET rocks

Im zehnten Teil der Serie “Das MSBuild Universum” werde ich sowohl die Möglichkeiten des Batchings, als

# MSBuild Hook Ups - Die Tore zum Ur-Universum

Dienstag, 23. Februar 2010 08:19 von .NET rocks

Im elften – und vorletzten – Teil der Artikelserie “Das MSBuild Universum” möchte ich die Möglichkeiten

# IronMSBuild – Direkte Verbindung zu allen Planeten des Universums

Mittwoch, 24. Februar 2010 22:51 von .NET rocks

Im zwölften – und letzten – Teil der Artikelserie “Das MSBuild Universum” möchte ich IronMSBuild vorstellen

Kommentar abgeben

(verpflichtend) 
(verpflichtend) 
(optional)
(verpflichtend)