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

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

    Подписка
    РУС
    • РУС
    • УКР

    Компилятор Roslyn

    advertisement advertisement

    Введение

    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/

    КОММЕНТАРИИ И ОБСУЖДЕНИЯ
    advertisement advertisement

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

    Библиотека современных IT знаний в удобном формате

    Выбирай свой вариант подписки в зависимости от задач, стоящих перед тобой. Но если нужно пройти полное обучение с нуля до уровня специалиста, то лучше выбирать Базовый или Премиум. А для того чтобы изучить 2-3 новые технологии, или повторить знания, готовясь к собеседованию, подойдет Пакет Стартовый.

    Стартовый
    • Все видеокурсы на 3 месяца
    • Тестирование по 10 курсам
    • Проверка 5 домашних заданий
    • Консультация с тренером 30 мин
    42.00 $
    59.99 $
    Оформить подписку
    Акция
    Базовый
    • Все видеокурсы на 6 месяцев
    • Тестирование по 16 курсам
    • Проверка 10 домашних заданий
    • Консультация с тренером 60 мин
    54.00 $
    89.99 $
    Оформить подписку
    Акция
    Премиум
    • Все видеокурсы на 1 год
    • Тестирование по 24 курсам
    • Проверка 20 домашних заданий
    • Консультация с тренером 120 мин
    85.00 $
    169.99 $
    Оформить подписку
    Акция
    Notification success