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.