CodeSmith Templates debuggen

Written on November 03, 2006

Code-Generatoren / O/R-Mapper wie CodeSmith erleichtern die Entwicklung von immer wiederkehrendem Code, wie Datenbank-Layer, Business-Objekten usw. ungemein.

Je ausgefeilter und (und damit produktiver) die Templates jedoch werden, desto größer ist auch die Gefahr, dass sich Fehler einschleichen, sodass die Code-Generierung fehlerhaft ist oder sogar zur Laufzeit abbricht.

Bei CodeSmith stellt dies jedoch kein Problem dar, da zusätzlich zur immer erfolgenden Validierung beim Kompilieren der Templates auch die Möglichkeit besteht, diese zur Laufzeit zu debuggen - wie das funktioniert, werde ich hier kurz aufzeigen.

Zunächst muß in der zu debuggenden Vorlagendefinition das Debuggen aktiviert werden:

<%@ CodeTemplate Language="C#" TargetLanguage="Text" Src="CodeBase.cs" Inherits="Main.CodeBase" Debug="True" Description="Template description here." %>

Weiterhin muß an geeigneter Stelle (idealerweise vor dem eigentlichen Code der Vorlage) ein Einstiegspunkt für den Debugger gesetzt werden:

<% Debugger.Break(); %>

Der nächste Schritt ist das Ausführen der Template in CodeSmith (Rechtsklick / Execute), wodurch nach Eingabe der Parameter und Klick auf den Generate-Button folgendes Fenster erscheint:

Durch einen Klick auf den Debug-Button erscheint ein Fenster zur Auswahl eines geeigneten Debuggers, hier Visual Studio 2005:

In Visual Studio erscheint nun im Solution-Explorer die CodeSmithStudio.exe:

Durch einen Klick auf den Start-with-Debug (oder F5-Taste) Button in Visual Studio 2005 wird nun das CodeSmithStudio wieder in den Vordergrund gebracht. Dort muss nun noch einmal auf den Generate-Button geklickt werden, wodurch in Visual Studio 2005 die zu debuggende Template geöffnet wird und der Debugger an den vorhin definierten Einstiegs-Breakpoint springt:

Das Debuggen kann nun, wie von Visual Studio 2005 gewohnt, fortgesetzt werden (z.B. Schrittweise per F11-Taste) und die Lokalen Variablen etc. ausgelesen werden:

In diesem Sinne: Happy Debugging ;-)