MSBuild Hook Ups - Die Tore zum Ur-Universum

Im elften – und vorletzten – Teil der Artikelserie “Das MSBuild Universum” möchte ich die Möglichkeiten aufzeigen, die es gibt, um den Standard-Buildprozess von .NET Anwendungen zu erweitern. Im Rahmen der Artikelserie wurden bereits die folgenden Artikel veröffentlicht

  1. MSBuild – Ein Überblick
  2. MSBuild – Leichte Kost
  3. MSBuild – Jenseits von HelloBuildWorld (MSBuild Properties)
  4. MSBuild Items – Die Planeten im Universum
  5. MSBuild Tasks - Die Umlaufbahnen im Universum
  6. MSBuild Conditions – Die Wurmlöcher des Universums
  7. MSBuild Custom Tasks – Sternschnuppen im MSBuild Universum
  8. MSBuild Targets – Die Asteroiden im MSBuild Universum nutzen
  9. MSBuild Logger - Reisen im Universum sollte man protokollieren
  10. MSBuild Batching und MSBuild Choose – Die Flugbahnen von Körpern im Universum beeinflussen

 

Standard Möglichkeiten (Visual Studio UI)

Die Standardmöglichkeiten ein Build-Script zu erweitern wird wohl jeder .NET Entwickler kennen. Über die Projekteigenschaften kann man sowohl das PreBuild- als auch das PostBuild-Event anpassen und hier eigene Anweisungen hinterlegen.

MSBuildHookUps1

In die hier gezeigten Textboxen kann man einfach Anweisungen eingeben, die dann ausgeführt werden. Alternativ kann man auch den Makro Dialog (Abbildung 2) verwenden um auf vordefinierte MSBuild-Properties zugreifen zu können.

MSBuildHookUps2

Mit dieser Option kann man schon recht viele Anforderungen abdecken, jedoch reicht das nicht in allen Fällen aus, manchmal muss einfach mehr Flexibilität her. Wer die Artikelserie bis hierher durchgearbeitet hat, ist in der glücklichen Lage die wichtigen MSBuild Features zu kennen und kann noch etwas mehr machen, als Visual Studio in der UI zulässt. :)

 

Erweiterte Möglichkeiten (MSBuild Script)

Wem die eben gezeigten Möglichkeiten nicht ausreichen, der kann auf eines der 14 vorhandenen Build Targets zurückgreifen und hier manuell die Anpassung vornehmen

  • BeforeBuild
  • AfterBuild
  • BeforeRebuild
  • AfterRebuild
  • BeforeResolveReferences
  • AfterResolveReferences
  • BeforeResGen
  • AfterResGen
  • BeforeCompile
  • AfterCompile
  • BeforeClean
  • AfterClean
  • BeforePublish
  • AfterPublish

Wie man diese Targets verwendet ist recht einfach, man deklariert diese Targets als wären es Custom-Targets.

 

Das BeforeClean Target überschreiben

Das Überschreiben eines Standard-BuildTargets ist einfach, hierbei ist jedoch zu beachten dass die angepasste Version nach der Originalversion im Build-Script stehen muss.

Alle 14 Standard Build-Targets werden über das TARGET File Microsoft.Common.targets ausgeliefert, daher müssen die überschriebenen Versionen nach dem Standard Import Statement

<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

angeordnet werden.

Exemplarisch möchte ich an dieser Stelle einfach das Standard-Target BeforeClean überschreiben, hierbei soll einfach vor jedem Clean-Vorgang eine Warnung erstellt und ausgegeben werden.

Mehr als das hinzufügen von

  <Target Name="BeforeClean">
    <Warning Text="MSBuild is going to clean up now!" />
  </Target>

ist nicht nötig. Wenn man die Projektdatei nun mit Visual Studio kompiliert, wird automatisch die zuvor definierte Warnung im Build-Fenster angezeigt und das sogar in der vom Entwickler gewohnten Form :) … MSBuild ist doch herrlich :)

MSBuildHookUps3

Wie so vieles in MSBuild, ist auch das hinterlegen von angepassten Anweisungen in vorhandenen Buildskripten (oder Projektdateien) kein Problem und basiert lediglich auf den Basics von MSBuild.

Fazit

Der Buildprozess von eigenen Anwendungen kann auch über die Grenze der Visual Studio UI hinweg einfach und schnell angepasst werden, was wieder einmal die Macht von MSBuild zeigt.

Langsam aber sicher nähere ich mich dem Ende der Artikelserie, was jedoch nicht bedeuten wird, dass es auf meinem Blog nichts mehr von MSBuild zu lesen geben wird. Im Rahmen der Artikelserie sind mir viele gute und nützliche Erweiterungspunkte aufgefallen, die ich nach und nach bedienen und hier festhalten werde.

In diesem Sinne hoffe ich, auch für den letzten Teil der Artikelserie viele Leser begeistern zu können. Denn…

 

Nicht nur C#, sondern auch MSBuild verwendet Ihr jeden Tag, also schaut was ihr daraus machen könnt :)

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

Kommentare

# Das MSBuild Universum - .NET rocks

Dienstag, 23. Februar 2010 08:20 von Das MSBuild Universum - .NET rocks

Ping Antwort von  Das MSBuild Universum - .NET rocks

# 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

# 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)