Введение
Roslyn – это компилятор с открытым исходным кодом для C# и Visual Basic. Roslyn представляет из себя библиотеку (API), интегрируемую в проект. Данный компилятор не имеет ничего общего с CLR. Таким образом, он может скомпилировать код с преобразованием в Intermediate Language для последующей передачи в CLR.
Установка компилятора
Для установки Roslyn Вам нужно скачать и установить Visual Studio 2015 Preview (рекомендуется установка на виртуальной машине). Затем перейдите на страницу проекта Roslyn и скачайте исходный код. Распаковав файл, Вы увидите папку с несколькими файлами и папками в ней. Нас интересует только папка Src:
Дважды щелкните на Roslyn.sln для загрузки проекта. После этого настройте solution в VS и перейдите в Roslyn/Binaries/Debug:
Использование компилятора
Каждый, кто использует C#, наверняка знаком с csc.exe. Посмотрев на дату создания файла, Вы увидите, что одновременно с открытием проекта Roslyn скомпилировался csc.exe. Как мы этим будем пользоваться?
Запустив файл csc из командной строки, Вы увидите ошибку:
C:\Users\Michael\Documents\Visual Studio 2015\Projects\roslyn\Binaries\Debug>csc
Microsoft (R) Visual C# Compiler version 1.0.0.0
Copyright (C) Microsoft Corporation. All rights reserved.
warning CS2008: No source files specified.
error CS1562: Outputs without source must have the /out option specified
C:\Users\Michael\Documents\Visual Studio 2015\Projects\roslyn\Binaries\Debug>
Тут нечему удивляться, поскольку Вы не указали исходный файл для компиляции. Теперь можно посмотреть ошибки и предупреждения в нашем исходном коде.
Если мы будем искать текст Outputs without source must have the /out option specified, то мы найдем место в коде, выдающее нам ошибку. В этом случае ошибка исходит из класса ResourceManager.
Разбираем пример
Скачайте и установите:
• Visual Studio 2015 Preview SDK
• Visual Studio Project Templates для Roslyn
• Syntax Visualizer для Roslyn
После установки откройте Visual Studio 2015 Preview и выберите шаблон “Compiler Platform Console Application”:
Добавьте следующий код в Main:
public static void Main(string[] args)
{
SyntaxTree tree = CSharpSyntaxTree.ParseText(
@"using System;
using System.Collections.Generic;
using System.Text;
namespace HelloWorld
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(""Hello, TDN!"");
}
}
}");
var root = (CompilationUnitSyntax)tree.GetRoot();
var compilation = CSharpCompilation.Create("HelloTDN")
.AddReferences(references: new[] { MetadataReference.CreateFromAssembly(typeof(object).Assembly) })
.AddSyntaxTrees(tree);
}
Видео курсы по схожей тематике:
Установите точку остановки (breakpoint) на последней фигурной скобке и запустите Syntax Visualizer через меню View -> Other Windows -> Roslyn Syntax Visualizer. Вы увидите следующее:
Запустите приложение и перейдите в верхнюю часть документа. Нажмите на объявленный SyntaxTree, и он перенаправит Вас на часть кода, в котором содержится большая часть информации. В нашем примере мы рассматриваем Leading и Trailing WhiteSpace.
Теперь мы увидели процесс компиляции с помощью Roslyn.
Выводы
Roslyn - это отличный метод получения полезной информации о нашем исходном коде. Он предоставляет множество функциональных возможностей, например: IntelliSence, переформатирование кода и т.д. Также он обеспечивает совместимость языков. Данный функционал дает много возможностей для инноваций в таких областях, как мета-программирование, генерация кода и его преобразование, интерактивное использование языков C# и Visual Basic.
Бесплатные вебинары по схожей тематике:
Источник: http://developer.telerik.com/featured/roslyn-nutshell/
Статьи по схожей тематике