Я только что прочитал некоторые официальные документы и примеры от Microsoft "Roslyn", и концепция кажется очень интересной. Из того, что я могу сказать, он открывает черный ящик, являющийся компилятором, и предоставляет интерфейс, который мы можем использовать для получения информации и метрик о коде, написанном в Visual Studio.
Похоже, что у Roslyn есть возможность «писать сценарии» кода и компилировать / исполнять его «на лету» (аналогично CodeDom), но в моем опыте я сталкивался только с ограниченным использованием этого типа функций.
Хотя элемент анализа кода и метрик является интересным пространством ... он существует очень давно, и есть многочисленные провайдеры, которые уже вложили много денег в инструменты анализа кода и рефакторинга (например, ReSharper, CodeRush). , nCover и т. д.), и они делают это довольно хорошо!
Почему любая компания изо всех сил старается внедрить что-то, что может быть предоставлено за небольшую плату, купив лицензию на один из существующих инструментов?
Может быть, я упустил некоторые ключевые функции проекта Roslyn, которые размещают его вне домена упомянутых инструментов ...
источник
Ответы:
Компиляция и исполнение на лету является ключевым преимуществом Roslyn. Я думаю, что вы, возможно, недооцениваете преимущества этой функции, потому что вы никогда не сталкивались с примером использования в своем опыте, где он действительно сияет. И это имеет смысл; потребность в динамической компиляции, вероятно, является нишевой функцией, но ее наличие обеспечивает некоторые мощные приложения, которые были бы намного сложнее без нее.
Вот несколько примеров из головы, где динамическая компиляция была бы весьма полезна. Есть и другие способы выполнить все эти вещи, но Рослин делает их проще.
Итак, подведем итог: вы можете никогда не найти применения Roslyn, в зависимости от того, какое программное обеспечение вы тратите на написание своего времени. Тем не менее, есть много вариантов использования, где Roslyn приносит много на стол. Ни один из упомянутых вами инструментов не предоставляет эту функцию. И при этом они не могли основываться на их архитектуре и цели.
источник
Я уверен, что компании, которые предоставляют инструменты (например, JetBrains *), очень заинтересованы в Roslyn. Microsoft хочет упростить создание инструментов, потому что хорошие инструменты стимулируют использование экосистемы Microsoft.
* Согласно блогу JetBrains ( эта запись ), JetBrians объявили, что они не будут использовать Roslyn. Однако я полагаю, что любые новые конкуренты JetBrains (у которых нет уже существующей базы кода для работы) будут использовать Roslyn; это дает им преимущество.
Вопрос 6 в 10 Вопросах, 10 Ответах на Roslyn :
источник
Я с нетерпением жду того дня, когда все компиляторы будут регулярно предлагать компилятор как услугу (CaaS). Нам нужно перестать думать, что компиляторы испускают только код перед компоновщиком, и начать думать, что компиляторы испускают деревья, которые могут быть преобразованы в несколько целей. Все компиляторы должны иметь возможность генерировать деревья и, необязательно, JSON / XML. Затем выходные данные могут быть преобразованы во многие типы целей, такие как украшенный один и тот же язык, C, исходный код IL, двоичный код IL, Java, Javascript, LLVM, исполняемый файл PIC и даже код предварительного компоновщика.
Я пишу компиляторы для жизни. Мои клиенты продаются на CaaS, потому что это открывает путь к фантастической гибкости, мобильности и анализу.
Я очень разочарован тем, что Microsoft давно не внедрила CaaS. Например, его можно было бы использовать в качестве пути миграции для VB6 к чему-либо другому или .Net к C ++.
источник
Простой ответ на вопрос, почему MSFT инвестирует в Roslyn, заключается в том, что их существующей кодовой базе для компилятора C # сейчас 5 версий - 11 лет. Это долгое время для любой кодовой базы, чтобы оставаться управляемым. Кроме того, поскольку они переписывают, они решили инвестировать в это, чтобы все его внутренние компоненты были представлены в виде API.
источник