Компилятор Roslyn
ITVDN: курсы программирования
Видеокурсы по
программированию

Выбери свою IT специальность

Начать бесплатно

Выбери свою IT специальность

Начать бесплатно

Компилятор Roslyn

LIVE ONLINE FRONTEND DEVELOPER День программиста на ITVDN. Скидки на обучение до 50%

Введение

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. Вы увидите следующее:

Окно Roslyn Syntax Visualizer

Запустите приложение и перейдите в верхнюю часть документа. Нажмите на объявленный SyntaxTree, и он перенаправит Вас на часть кода, в котором содержится большая часть информации. В нашем примере мы рассматриваем Leading и Trailing WhiteSpace.

Объявление SyntaxTree

Теперь мы увидели процесс компиляции с помощью Roslyn.

Выводы

Roslyn - это отличный метод получения полезной информации о нашем исходном коде. Он предоставляет множество функциональных возможностей, например: IntelliSence, переформатирование кода и т.д. Также он обеспечивает совместимость языков. Данный функционал дает много возможностей для инноваций в таких областях, как мета-программирование, генерация кода и его преобразование, интерактивное использование языков C# и Visual Basic.

Источник: http://developer.telerik.com/featured/roslyn-nutshell/

КОММЕНТАРИИ И ОБСУЖДЕНИЯ
LIVE ONLINE FRONTEND DEVELOPER День программиста на ITVDN. Скидки на обучение до 50%

Пакеты подписки с доступом ко всем курсам и сервисам

Стартовый
  • Все видеокурсы на 3 месяца
  • Тестирование по 10 курсам
  • Проверка 5 домашних заданий
  • Консультация с тренером 30 мин
Базовый
  • Все видеокурсы на 6 месяцев
  • Тестирование по 16 курсам
  • Проверка 10 домашних заданий
  • Консультация с тренером 60 мин
Премиум
  • Все видеокурсы на 12 месяцев
  • Тестирование по 24 курсам
  • Проверка 20 домашних заданий
  • Консультация с тренером 120 мин
Notification success