PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Roslyn, anyone?


Monger
2016-11-21, 21:42:01
Ich schieß mal ins Blaue:
Hat hier zufällig jemand schonmal was mit der neuen .NET Compilerplattform Roslyn gemacht?
Ich nehm mir schon seit nem Jahr vor was darin zu machen, hab auch verschiedene kleine Projekte im Kopf, finde aber irgendwie wenig Literatur dazu.
Ich kenn so die Standardbeispiele (Codeanalyse, refactoren), aber nix was darüber ernsthaft hinaus geht. Mich würde z.B. interessieren, ob ich damit meine eigene domänen-spezifische Sprache machen könnte. Oder wie man zur Laufzeit Code generiert und ausführt. Aber ohne n bissl Hintergrundinfos will ich mich da nicht einfach mal ins Ungewisse stürzen.

Hat hier zufällig jemand damit schon Erfahrung gesammelt?

Trap
2016-11-21, 22:19:18
Ich hab nur einen einfachen Codeanalyzer geschrieben.

Nach der Umstellung von einem int auf ein Interface alle Verwendungen von == anmeckern. Hat nach der manuellen Umstellung noch eine handvoll defekte Codestellen gefunden.

Zur Laufzeit Code generieren und ausführen ging auch schon vor Roslyn mit Bytecode basierten Frameworks vergleichsweise einfach.

Monger
2016-11-22, 21:30:48
Zur Laufzeit Code generieren und ausführen ging auch schon vor Roslyn mit Bytecode basierten Frameworks vergleichsweise einfach.
Zum Beispiel?
Von Hand will ich eigentlich nicht im Bytecode von der IL rumgraben.

Trap
2016-11-22, 22:41:11
Wenn man Code ausführen möchte, muss am Ende ja irgendwie IL rauskommen. Wenn die zu generierende Logik einfach genug ist, kann IL direkt erzeugen auch mal die praktischste Lösung sein: https://blogs.msdn.microsoft.com/joelpob/2004/03/31/hello-world-lcg-lightweight-code-gen-style/

Wenn man eine eigene Spracherweiterung für C# (z.B. für eine domain specific language) machen möchte gibt es die Anleitung hier:
https://github.com/dotnet/roslyn/blob/master/docs/contributing/Building%2C%20Debugging%2C%20and%20Testing%20on%20Windows.md
Die Idee dabei ist "einfach" einen Fork von Roslyn zu machen und den Fork als Compiler in VS einzubinden. Erweiterungsmöglichkeiten ohne Roslyn-Fork gibt es glaub ich nicht so wirklich.