Ich hatte vor Kurzem das Vergnügen ein Build-Szenario für unser Produkt zu entwickeln. Die Wahl viel natürlich auf MSBuild. Die Anforderungen, so dachte ich zumindest, seien wenig exotisch und sollten sich problemlos umsetzen lassen... mal schaun ;-)

  • Config-Files der Umgebung entsprechend anpassen (Produktivsystem braucht andere ConnectionStrings als der Entwicklungsrechner)
  • IIS-Deployment der ASP.NET-Applikationen
  • Einige kleine IIS-Scriptings
  • und... mmmh... ach ja, Builden! :-)

Das waren die Anforderungen. Gross befasst hatte ich bevor noch nicht mit MSBuild, so ging ich als voller Vorfreude an die Sache ran...

Die erste Erkenntnis die ich machte war, dass MSBuild selbst nicht sehr viele Tasks von sich aus mitbringt. MSBuild Tasks können jedoch relativ einfach auch selber erstellt werden (dazu später mehr), daher verwundert es nicht, dass diese auch zahlreich im Netz vorhanden sind. Allen voran sind hier zwei Projekte zu nennen:

Beide bieten verschiedenste sehr nützliche Tasks zu zum Teil recht spezifischen Problemstellungen. Zweiteres bietet zusätzlich noch diverse Tasks zur Interaktion mit einem Biztalk-Server. Ansonsten sind beide recht ähnlich, und haben beide auch (ähnliche) Schwächen:

  • Beide bieten vorgefertigte Tasks um mit XML-Files zu interagieren. Dummerweise scheitert man bereits, wenn man statt eines einzelnen Wertes einen ganzen Node (mit Subnodes) selektieren möchte. Ich würde ja nicht mal erwarten, dass man dann DOM-mässig in den Nodes herumnavigieren könnte, aber eine reine Text-Selektion wäre schon etwas.
  • Ebenfalls beide bieten viele Möglichkeiten, IIS-Skripte zu automatisieren. Ich benötigte da vorallem das Erstellen und Löschen von virtuellen Verzeichnissen und Webs. Die Lösung der Community Tasks bietet da praktisch alles was das Herz begehrt. Aber wieso man beim erstellen eines Virtuellen Verzeichnisses das Parent-Web nicht angeben kann, ist mir ein Rätsel. Beim SBF-Framework funktioniert dies zwar - dafür kann man dort kein Default-Document festlegen... :-(

Generell hatte ich vom SBF-Projekt allerdings den besseren Eindruck. Es ist vom Umfang her grösser und bietet Lösungen zu Teils doch komplexen Problemstellungen. Das Framework ist (bis auf einige Ausnahmen) gut dokumentiert und bietet zu fast allen Tasks entsprechende Samples.

Als Fazit kann man nur sagen, dass es doch wünschenswert wäre, wenn die beiden Projekte zusammenspannen würde - so würde ein wirklich umfassendes und Leistungsstarkes Framework entstehen.

Fortsetzung folgt...