MSBuild 4.0 New Features: Property Functions

Ebenfalls neu in MSBuild 4.0 sind Property Functions, mit Property Functions hat man die Möglichkeit den doch eher statischen Properties in MSBuild etwas mehr Leben einzuhauchen.

Bei allen Property Functions ist zu beachten, dass die Properties eines Buildfiles ausgewertet werden, bevor das erste Target beziehungsweise der erste Task ausgeführt wird.

Mit MSBuild 4.0 wird es drei unterschiedliche Formen der Property Functions geben, die jeweils über einen abweichenden Syntax verfügen

  • String property functions
  • Static property functions
  • MSBuild property functions

String Property Functions

Jede Property in MSBuild ist eine Instanz des Typs System.String, mit String Property Functions ist es nun möglich jede! Instanzmethode des Typs System.String für die aktuelle Property auszuführen. So kann man beispielsweise eine Property mit

$(MySuperCoolProperty.ToUpper())

die Property MySuperCoolProperty in Großbuchstaben umwandeln, oder mit

$(MSBuildToolsPath.Substring(0,10)

sich einen Teil des Pfades der MSBuild Variable MSBuildToolsPath zurückgeben lassen.

 

Static Property Functions

Über Static Property Functions kann man auf statische Properties oder Methoden vieler Klassen aus dem System Namcespace zugreifen und diese Ausführen.

Mit

<CurrentDateTime>$([System.DateTime]::Now)</CurrentDateTime>

bekommt man recht einfach das aktuelle Datum in die Property CurrentDateTime geschrieben.

Mit

<NewId>$([System.Guid]::NewGuid())</NewId>

kann man sich im Handumdrehen eine neue GUID in die Property NewId schreiben lassen. Eine Liste aller Klassen, deren statische Member verwendet werden können, findet ihr hier.

 

MSBuild Property Functions

Die letzte Gruppe der Property Functions, ist die der MSBuild Property Functions. Hierbei handelt es sich um ein Set an Funktionen, die nun direkt mit der MSBuild Runtime ausgeliefert werden. Eine Vielzahl der Funktionen wurde in früheren Version verwendet indem man die CommunityTasks für MSBuild verwendet hat, diese werden nun für solch allgemeine Methoden nicht mehr benötigt.

Eine einfache Addition kann durch

<MyRes>$([MSBuild]::Add(4,3))</MyRes>

realisiert werden, wobei auch andere MSBuild Properties als Parameter verwendet werden können, wie das folgende Snippet zeigt

<MyRes>$([MSBuild]::Add($(MyFirstValue), $(MySecondValue)))</MyRes>

Hier ein kleiner Auszug der integrierten MSBuild Property Functions

  • Add
  • Multiply
  • Divide
  • Modulo
  • Escape
  • BitwiseAnd
  • BtwiseXor
  • GetRegistryValueFromView

die komplette Liste aller MSBuild Property Functions ist auf der MSDN Seite zu finden.

 

Fazit

Durch Property Functions kommt endlich etwas mehr Dynamik in die starren MSBuild Properties hinein. Einfache Operationen bedürfen nun keinen CustomTasks mehr, sondern können genau dort ausgeführt werden, wo sie auch benötigt werden, bei der Initialisierung der Properties.

 

Technorati-Tags: ,
DotNetKicks-DE Image
Published Dienstag, 2. März 2010 07:31 von ThorstenHans
Abgelegt unter: ,

Kommentare

# Social comments and analytics for this post

Dienstag, 2. März 2010 08:54 von uberVU - social comments

This post was mentioned on Twitter by ThorstenHans: gebloggt MSBuild 4.0 New Features: Property Functions http://tinyurl.com/ygerlsz #dotnetrocks

# MSBuild 4.0 New Features: BeforeTargets and AfterTargets

Dienstag, 2. März 2010 11:59 von .NET rocks

Neben den bereits vorgestellten Neuerungen Inline Tasks Property Functions sind auch BeforeTargets und

# Das MSBuild Universum - .NET rocks

Mittwoch, 17. März 2010 11:26 von Das MSBuild Universum - .NET rocks

Ping Antwort von  Das MSBuild Universum - .NET rocks

Kommentar abgeben

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