.NET Compiler Platform (Codename Roslyn) ist der Name für eine von Microsoft entwickelte Plattform, die Compiler für die .NET-Programmiersprachen C# und Visual Basic .NET beinhaltet. Diese Compiler dienen der Kompilierung von C#- oder VB-Code in CIL-Code und wurden als Nachfolger für die ursprünglichen, für diese Sprachen entstandenen Compiler entwickelt, unter anderem deshalb, um besser mit dem im Laufe der Zeit gestiegenen Funktionsumfang der beiden Programmiersprachen umgehen zu können. Die Plattform beinhaltet zudem eine Klassenbibliothek und Programmierschnittstellen, unter anderem für die Codeanalyse, für Erweiterungen der Entwicklungsumgebung Visual Studio und für die Erweiterung des Compilers selbst. Im Gegensatz zu den ursprünglichen Compilern, die in C++ programmiert wurden, sind die in der Plattform enthaltenen Compiler in den Programmiersprachen geschrieben, für die sie vorgesehen sind, d. h. der C#-Compiler wurde in C# programmiert und der VB-Compiler in VB .NET. Der Peachpie-Compiler für die Programmiersprache PHP (Vorschau im September 2020) dagegen wird in C# entwickelt.[1]
Die Geschichte der Plattform reicht bis mindestens 2010 zurück. Ehe Visual Studio 2015 erschien, trug das Projekt den Codenamen Roslyn. Microsoft veröffentlichte eine erste Vorabversion im Oktober 2011 als Visual-Studio-2010-Erweiterung, die nach vielen Aktualisierungen der Roslyn-API für Visual Studio 2012 als Erweiterung heruntergeladen werden konnte.[2] Im April 2014 folgte die Freigabe als quelloffene Software unter der Apache-Lizenz 2.0. Die Spracheigenschaften der Versionen C# 6 und Visual Basic.NET 14 sind ausschließlich mit der Roslyn-Erweiterung zu nutzen.[3] Die APIs sind mit dem Paket-Manager NuGet ab Version 2.8.1 erhältlich.
Mit dem Erscheinen von VS 2015 verließ das Projekt die Entwicklungsphase, einhergehend mit der Umbenennung in .NET Compiler Platform und der Veröffentlichung als Open-Source-Software. In VS 2015 ersetzen die in der Plattform enthaltenen Compiler erstmals die ursprünglichen Compiler.[4]
Durch Roslyn wird es möglich, in einem .NET-Programm .NET-Programmcode zu analysieren, zu generieren, syntaktisch zu überprüfen, zu transformieren etc. So können z. B. bestehende C#-Befehle erweitert, abgeändert und neue hinzugenommen werden, indem der Compiler durch eigenen Programmcode erweitert oder geändert wird. Auch kann man für andere Plattformen kompilieren, indem man die Generierung des .NET-Bytecode (CIL-Code) durch die Erstellung einer anderen ausführbaren Datei ersetzt. Codegeneratoren, die z. B. VB.NET in andere Sprachen übersetzen oder C#-Syntaxprüfung bzw. -Syntaxhervorhebung werden damit ebenfalls relativ einfach möglich, da jeweils über die API auf einzelne Teile des Compilers (z. B. auf den Parser oder den Syntaxbaum[5]) zugegriffen werden kann.[6][7][8]