Die .Net-CLR als Makro-Baukasten

Compilerbau als Dreizeiler

Letztlich stellt sich die ganze Lösung als ein einfacher Dreizeiler dar. Die benötigten Klassen befinden sich in den Namespaces System.CodeDom.Compiler und Microsoft.CSharp. Den eigentlichen Compiler instanziieren Sie einfach wie folgt.

CSharpCodeProvider compiler = new CSharpCodeProvider ();

Dieser Compiler kann Quellcode aus verschiedenen Quellen übersetzen. Bei unserem Projekt css lassen wir den Quellcode aus einer Datei einlesen. Die zugehörige Methode benötigt zwei Parameter: Der erste übergibt die Compiler-Optionen, der zweite den Pfad auf die zu übersetzende Datei. Für die Kapselung der Compiler-Optionen existiert eine eigenständige Klasse namens CompilerParameters. Mit diesem Wissen können Sie die erste Version des css-Programms bereits erstellen:

CSharpCodeProvider compiler = new CSharpCodeProvider ();
CompilerParameters options = new CompilerParameters();
compiler.CompileAssemblyFromFile( options, “PfadZurDatei.cs”);

Der Pfad zum Quellcode PfadZurDatei ist natürlich durch den Namen der Datei zu ersetzen.