Automatisch compilieren

Im ersten Schritt wollen wir nur nach der Code-Gene­rie­rung die Compilierung auto­ma­tisch starten. In den bisherigen Beispielen wurde dazu noch manuell die Skript-Datei !CompileAndRun.bat gestartet, siehe Cs/C#-Test ausführen.

Im letzten Kapitel wurde be­reits eine erste Version der Datei Pro­ject.ini erläutert:

D:\Projekte\LF‑ET-Demo\Cs\Pro­ject.ini

ide.cs=true

ide.cs.procedure.file=procedure.bat

ide.cs.procedure.args=${project.drive} "${src.folder}" ${src.name} ${codetype}

Jetzt muss noch die Skript-Datei procedure.bat angelegt werden. Für unsere Beispiele speichern wir diese ebenfalls im selben Ordner wie die Ent­schei­dungs­ta­belle:

D:\Projekte\LF‑ET-Demo\Cs\procedure.bat

@echo off

set projectDrive=%1

set srcFolder=%2

set srcName=%3

set codetype=%4

if not %codetype%==Application goto exitok

%projectDrive%

cd %srcFolder%

call ..\ConfigCs.bat

echo.

echo * Compile %srcName%.cs *

csc.exe /out:%srcName%Test.exe %srcName%.cs

if errorlevel 1 goto err

:exitok

echo * Folgeverarbeitung erfolg­reich beendet *

exit

:err

echo * Fehler in der Folgeverarbeitung * >&2

Skript-Eintrag Bedeutung/Wirkung

@echo off

set projectDrive=%1

set srcFolder=%2

set srcName=%3

set codetype=%4

Deaktivierung aller Prompts auf der Konsole.

Übername der Aufruf-Parameter in sprechend benannte Variablen.

if not %codetype%==Application goto exitok

Wenn codetype nicht Application, dann keine wei­tere Verarbeitung.

%projectDrive%

cd %srcFolder%

Setzen der Arbeitsumgebung (Laufwerk und Ordner).

call ..\ConfigCs.bat

Aufruf der 'zentralen' Anpassung von Umgebungs­variablen an die aktuelle Systemumgebung, siehe auch Kapitel: Cs/C#-Test ausführen

echo.

echo * Compile %srcName%.cs *

csc.exe /out:%srcName%Test.exe %srcName%.cs

if errorlevel 1 goto err

Leerzeile und Compile-Info auf der Konsole ausgeben, dann die Compilierung aller C#-Sourcen starten. Im Fehlerfalle (errorlevel ist größer oder gleich 1) Sprung zur Fehlerausgabe.

:exitok

echo * Folgeverarbeitung erfolg­reich beendet *

exit

Sprungmarke für reguläres Ende: Erfolgsmeldung auf der Konsole ausgeben und das Skript beenden.

:err

echo * Fehler in der Folgeverarbeitung * >&2

Sprungmarke für den Fehlerfall: Ausgabe der Fehlermeldung auf dem Fehlerkanal (>&2) und Skript-Ende.

Wird in LF‑ET nun die Cs/C#-Gene­rie­rung gestartet, dann passiert folgendes:

  • LF‑ET stellt fest, dass eine Datei Pro­ject.ini existiert

  • Die Datei Pro­ject.ini wird aus­ge­wer­tet und LF‑ET stellt fest, dass für C# eine Folgeverarbeitung definiert ist

  • Die C#-Source-Datei zur Ent­schei­dungs­ta­belle wird ge­ne­riert

  • Die Skript-Datei procedure.bat wird mit den dynamisch aufbereiteten Parametern aufgerufen

Alle Vorgänge, auch die Konsol-Ausgaben der Skript-Datei, werden im Protokoll-Bildschirm dargestellt, u.a. sieht man hier auch ganz genau die tatsächlich an das Skript procedure.bat übergebenen Parameter:

image4105 63

Sollten Fehler auftreten (wir haben zur Demonstration im Ent­schei­dungs­ta­bellen-Prolog public class in bublic class geändert), werden Informationen dazu ebenfalls angezeigt und der Fortschrittsbalken wird rot:

image4105 64

Wichtig: Der hier definierte Mechanismus gilt auto­ma­tisch für alle Ent­schei­dungs­ta­bellen im Wirkungsbereich der Konfi­gura­tionsdatei Pro­ject.ini. Wirkungsbereich: siehe Die Suche nach INI-Dateien.

Auf diese Weise lassen sich beliebig komplexe Folgeprozesse für die Gene­rie­rung realisieren.

Weiterführende Informationen: