BT

Roslyn: o ‘Compilador como Serviço’ da Microsoft

por Elemar Jr. em 13 Abr 2012 |

O Roslyn, projeto da Microsoft que torna acessível o processo de compilação para .NET, está em versão CTP, bastante estável, desde outubro de 2012. Entretanto, embora seja revolucionário, ainda é relativamente desconhecido para a comunidade desenvolvedora.

O Roslyn torna a compilação transparente, facilitando o desenvolvimento de ferramentas para geração, análise e refatoração de código. Além disso, diminui significativamente a complexidade de soluções de scripting e de programação interativa com VB e C#.

O Roslyn funciona como uma extensão para o Visual Studio 2010 SP1, adicionando recursos ao IDE como um Console REPL para C# e VB (veja a figura abaixo). Também pode operar como uma biblioteca, utilizável diretamente em seus programas.

O código que segue ilustra o potencial do Roslyn no suporte a scripting. São necessárias algumas poucas linhas para desenvolver uma interface interativa para uma aplicação.

using System;
using Roslyn.Compilers;
using Roslyn.Scripting.CSharp;
using Roslyn.Scripting;

namespace Roslyn_001
{
    class Program
    {
        static void Main(string[] args)
        {
            var engine = new ScriptEngine();
            var session = Session.Create();
            session.AddReference(MetadataReference.Create("System"));
            session.AddReference(MetadataReference.Create("System.Core"));
            session.AddReference(MetadataReference.Create("System.Data"));
            session.AddReference( MetadataReference.Create("System.Data.DataSetExtensions"));

            Console.WriteLine("Roslyn REPL for C#");
            while (true)
            {
                Console.Write(">");
                try
                {
                    var result = engine.Execute(Console.ReadLine(), session);
                    if (result != null)
                        Console.WriteLine("{0}\n", result);
                }
                catch (Exception m)
                {
                    Console.WriteLine("{0}\n", m.ToString());
                }
            }
        }
    }
}

A imagem que segue ilustra o programa anterior em execução:

A possibilidade de combinar o compilador do C# com aplicações comuns faz com que Roslyn esteja sendo chamado como "compilador como serviço".

É importante destacar que o Roslyn está incompleto e há muitos recursos de VB e C# que não são suportados ainda. De qualquer forma, o que já está disponível deverá permanecer compatível na versão final, e já tem um conjunto de funcionalidades suficiente para muitos experimentos.

Avalie esse artigo

Relevância
Estilo/Redação

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Roslyn Rocks by Cleydson Silva de Andrade

Muito legal o artigo Elemar.
Realmente, depois do Roslyn totalmente implementado as possibilidades de uso serão infinitas. A comunidade .Net vai ganhar muitíssimo com isso. Lembrei de algumas soluções nas quais utilizei reflections que ficariam muito mais simples e flexíveis com o Roslyn.

Roslyn: o ‘Compilador como Serviço’ da Microsoft correção Outubro de 2011 by Vinicius Leite

está em versão CTP, bastante estável, desde outubro de 2012... Corrigir para 2011

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

2 Dê sua opinião
Feedback geral
Bugs
Publicidade
Editorial
Marketing
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2016 C4Media Inc.
Política de privacidade
BT

We notice you’re using an ad blocker

We understand why you use ad blockers. However to keep InfoQ free we need your support. InfoQ will not provide your data to third parties without individual opt-in consent. We only work with advertisers relevant to our readers. Please consider whitelisting us.