.NET Compiler Platform , también conocido por su nombre en clave Roslyn , [ 2 ] es un conjunto de compiladores de código abierto y API de análisis de código para los lenguajes C# y Visual Basic (VB.NET) de Microsoft . [ 3 ]
El proyecto incluye, en particular, versiones autoalojadas de los compiladores de C# y VB.NET, compiladores escritos en los propios lenguajes. Los compiladores están disponibles a través de los programas de línea de comandos tradicionales, pero también como API disponibles de forma nativa desde el código .NET. Roslyn expone módulos para el análisis sintáctico ( léxico ) del código, el análisis semántico, la compilación dinámica a CIL y la generación de código. [ 4 ]
Características
Las características de Roslyn incluyen:
- Compiladores para los lenguajes C# y Visual Basic expuestos como servicios a través de API.
- API para el análisis y la refactorización de código .
Historia
El nombre en clave "Roslyn" apareció públicamente por primera vez en una publicación [ 5 ] escrita por Eric Lippert (un exingeniero de Microsoft [ 6 ] ) que publicó en 2010 para contratar desarrolladores para un nuevo proyecto. Inicialmente dijo que el origen del nombre se debía a Roslyn, Washington , pero más adelante en la publicación habla irónicamente sobre la "exposición norte" de su oficina; la ciudad de Roslyn fue uno de los lugares donde se filmó la serie de televisión Northern Exposure . [ 7 ]
Microsoft puso a disposición del público una versión preliminar de tecnología comunitaria (CTP) para su descarga en octubre de 2011. Se instalaba como una extensión de Visual Studio 2010 SP1. [ 8 ]
El CTP se actualizó en septiembre de 2012 [ 9 ] para incluir muchas actualizaciones de las API de Roslyn introducidas en los CTP de junio de 2012 y octubre de 2011, incluidos cambios incompatibles . [ 10 ] Si bien la API del CTP de junio de 2012 está completa para los compiladores, no todas las características se implementaron para los lenguajes C# y VB.NET. [ 11 ]
En la conferencia Build 2014 en San Francisco en abril de 2014, Microsoft liberó el proyecto "Roslyn" como código abierto y lanzó una vista previa de la integración del lenguaje para Visual Studio 2013. Desde el 3 de abril de 2014, Roslyn está bajo la Licencia Apache 2.0. [ 3 ] El proyecto fue transferido efectivamente bajo la tutela de la recién fundada .NET Foundation. [ 12 ] En la misma conferencia, Xamarin anunció que está trabajando en la integración de los nuevos compiladores y herramientas en Xamarin Studio . [ 13 ]
En esta versión, los compiladores no estaban completos en cuanto a funcionalidades. Cada uno de ellos incluye características previstas para las próximas versiones del lenguaje (C# 6 y Visual Basic.NET 14). Las API también están disponibles a través del administrador de paquetes NuGet .
A partir de 2013, Roslyn admite VB y C#, y los compiladores están escritos en sus respectivos lenguajes. [ 14 ] El primer lanzamiento de Roslyn para fabricación (RTM) fue con Visual Studio 2015. [ 15 ]
En enero de 2015, Microsoft trasladó el código fuente de Roslyn de CodePlex a GitHub . [ 16 ]
Arquitectura
Tradicionalmente, los compiladores .NET han sido una caja negra para los desarrolladores de aplicaciones. [ 17 ] Sin embargo, con la creciente complejidad y las demandas de análisis de código fuente en los entornos de desarrollo integrados modernos, los compiladores necesitan exponer interfaces de programación de aplicaciones (API) que ayuden a los desarrolladores a realizar directamente fases de compilación, como el análisis de la estructura léxica y sintáctica del código fuente. Roslyn fue diseñado con esa intención desde el principio. Esto reduce la barrera en el desarrollo de herramientas diseñadas específicamente para el análisis de código fuente. Las API de Roslyn son de tres tipos: API de características, API de espacio de trabajo y API de compilador. Las API de características permiten a los desarrolladores de herramientas de código fuente realizar refactorización y correcciones de código. Las API de espacio de trabajo permiten a los desarrolladores de complementos realizar acciones específicamente requeridas en entornos de desarrollo integrados (IDE) como Visual Studio, como encontrar referencias de una variable o formatear código. Las API de compilador permiten un análisis aún más sofisticado del código fuente, al exponer llamadas directas para realizar análisis de árbol sintáctico y flujo de enlace. [ 18 ] Utilizando una implementación de código abierto de Common Language Infrastructure (CLI), como .NET Core , Roslyn podrá compilar de manera independiente de la plataforma, capaz de ejecutar código CLI en Linux , OS X y Windows .
Invocación programática
Roslyn se puede invocar mediante programación. Reside en el espacio de nombres Microsoft.CodeAnalysis.CSharp, entre varios paquetes NuGet . [ 19 ]
Ejemplo
espacio de nombres Wikipedia.Ejemplos ;using System ; using System.IO ; using System.Linq ; using System.Reflection ;using Microsoft.CodeAnalysis ; using Microsoft.CodeAnalysis.CSharp ; using Microsoft.CodeAnalysis.CSharp.Syntax ; using Microsoft.CodeAnalysis.Emit ;public class Example { static void Main ( string [] args ) { string code = @" using System;public class MyProgram { public static void Main(string[] args) { int number = 42; string text = ""¡Hola desde Roslyn!""; Console.WriteLine($""Número: {number}, Texto: {text}""); } } " ;SyntaxTree syntaxTree = CSharpSyntaxTree.ParseText ( code ) ; CSharpCompilation compilation = CSharpCompilation.Create ( " MyProgramAssembly " , // Nombre del ensamblado syntaxTrees : new [ ] { syntaxTree } , references : new MetadataReference [ ] { MetadataReference.CreateFromFile ( typeof ( object ) .Assembly.Location ) , MetadataReference.CreateFromFile ( typeof ( Console ) .Assembly.Location ) } , options : new CSharpCompilationOptions ( OutputKind.ConsoleApplication ) ) ;using ( MemoryStream ms = new ()) { EmitResult emitResult = compilation . Emit ( ms );if ( emitResult . Success ) { Console . WriteLine ( "¡Compilación exitosa!" ); ms . Seek ( 0 , SeekOrigin . Begin );Assembly assembly = Assembly.Load ( ms.ToArray ( ) ) ; MethodInfo entryPoint = assembly.EntryPoint ; if ( entryPoint ! = null ) { entryPoint.Invoke ( null , new object [ ] { args } ) ; } } else { Console.WriteLine ( " Error de compilación . " ) ; foreach ( Diagnostic diagnostic in emitResult.Diagnostics ) { Console.WriteLine ( diagnostic.ToString ( ) ) ; } } } } }Véase también
- Lista de compiladores
- Microsoft Phoenix
- Compilador de Java , compilador para Java también invocable mediante programación.
Referencias
- ^ "Lanzamiento de .NET 7.0.0" . GitHub. 14 de diciembre de 2021. Consultado el 5 de mayo de 2022 .
- ^ "C# y Visual Basic: utilice Roslyn para escribir un analizador de código en tiempo real para su API" . msdn.microsoft.com . 24 de julio de 2015. Consultado el 7 de enero de 2019 .
- ^ a b Plataforma de compilación .NET ("Roslyn") en GitHub
- ^ Neil McAllister, Roslyn de Microsoft: Reinventando el compilador tal como lo conocemos , DEVELOPER_WORLD , 2011-10-20
- ^ "Contratando personal para Roslyn" . Blog de Eric Lippert en MSDN . Eric Lippert. 16 de diciembre de 2010.
- ^ "Fabulosas aventuras en la programación" . Acerca de Eric Lippert . Eric Lippert. 29 de noviembre de 2012.
- ^ Muir, Pat (5 de octubre de 2014). "Roslyn espera que su nuevo programa de televisión le brinde 15 minutos más de fama" . Yakima Herald . Consultado el 1 de noviembre de 2014 .
{{cite news}}: CS1 maint: deprecated archival service (link) - ^ Microsoft "Roslyn" CTP Archivado el 18 de abril de 2012 en Wayback Machine , Centro de descargas de Microsoft
- ^ Microsoft "Roslyn" CTP , Centro de descargas de Microsoft
- ^ Novedades de Microsoft "Roslyn" CTP de septiembre de 2012 , Foros de Visual Studio vNext
- ^ Limitaciones conocidas y características del lenguaje no implementadas , Foros de Visual Studio vNext
- ^ Fundación .NET – Fundación de código abierto para la comunidad .NET
- ^ "Aspectos destacados de la segunda conferencia magistral de Build 2014" . InfoQ . Consultado el 26 de diciembre de 2021 .
- ^ Microsoft Roslyn vs. CodeDom
- ^ Visual Studio 2015 RTM , 2015-07-20
- ^ ¡ Nos mudamos a GitHub! Archivado el 1 de diciembre de 2015 en Wayback Machine , Blog de MSDN VBTeam, 10 de enero de 2015
- ^ "Documento técnico: Descripción general del proyecto Roslyn" . Microsoft .
- ^ Descripción general de Roslyn según la documentación de GitHub
- ^ "Espacio de nombres Microsoft.CodeAnalysis.CSharp" . learn.microsoft.com . Microsoft Learn . Consultado el 21 de octubre de 2025 .
Lecturas adicionales
- Vasani, Manish (2017). Roslyn Cookbook: Compiler as a Service, Code Analysis, Code Quality and more . Packt Publishing. ISBN 978-1787286832.
- Harrison, Nick (2017). Generación de código con Roslyn . Apress. ISBN 978-1484222102.
- Mukherjee, Sudipta (2017). Análisis de código fuente con Roslyn y visualización de datos JavaScript . Apress. ISBN 978-1484219249.
Enlaces externos
- Herramientas de programación .NET
- Compiladores
- Software gratuito de Microsoft
- Software que utiliza la licencia MIT.