.NET C# mit Roslyn

Dec 25, 2021

development

Roslyn ist eine Compiler-Plattform, welche aus C# Code IL Code machen kann.

Dabei kann man diverse Schritte zwischen C# und IL analysieren und auch manipulieren (in Form von Ergänzung). Die Manipulation macht unter anderem bei Aspekt orientierter Programmierung Sinn, wenn man Cross-Cutting-Concerns auslagern will. Das ging bis dato nur mit PostSharp gut. Vor- und Nachteile wurden hier im Detail abgehandelt. Ich habe Roslyn für die Analyse von Source-Code verwendet. Es funktioniert sehr gut. Die Challenge ist eher der Kompilierprozess per API – der ist ein wenig wackelig.

Das ist das zu analysierende Programm. Ansclhießend kann man mit der Roslyn API direkt Analysen drauf tätigen:

Ein paar wichtige Findings:

  • MSBuildLocator.RegisterDefaults(): Ohne dem konnte ich nicht kompilieren. In den Tiefen der GitHub Issues gefunden
  • Das Suchen von Methodenaufrufen (FindSymbolInfowByMethodAsync) ist auch nicht einfach - aber logisch. Wenn man es in Visual Studio macht, dann klickt man zuerst auch auf ein Source-Code Fragment und sucht dann danach. Nichts anderes macht der Code.

Fazit: Roslyn öffnet die Tore für Code-Analyse. Tolle Sache!