Генератор текста на основе изменяемого в Runtime шаблона
От: stomsky Россия  
Дата: 29.07.19 08:34
Оценка:
Добрый день!

Есть такая задача:
Нужен генератор текста (в памяти или сразу в текстовый файл — не важно), формирующий текст на основе шаблонов. Шаблоны представляют собой текстовые файлы со специфической разметкой типа T4 или Razor. Фишка в том, что в эти шаблоны могут вноситься изменения в процессе работы программы. И после внесения этих изменений перезапуск программы требоваться не должен.
Четкого требования к формату файлов-шаблонов нет. Что выберу, то и будет.

Для себя решил:
1. взять либо Razor (есть небольшой опыт генерации текста с его помощью в своем приложении), либо T4 (пока есть опыт его использования только в Visual Studio, но мне синтаксис почему-то нравится больше)
2. для исполнения сгенерированного Razor-ом или T4 кода на C# в условиях меняющихся шаблонов (т.е. меняющего C#-кода) планирую использовать Roslyn. Опыта с Roslyn-ом нет совсем, но читал, что он умеет исполнять код на C# как скрипт. Просто с загрузкой/выгрузкой домена приложения на каждое изменение файла шаблона не хочется заморачиваться...

Собственно вопросы:
1. Как бы вы решали аналогичную проблему? Не слишком ли тяжелый вариант я выбрал? Может вообще какая-нибудь отдельная утилита/библиотека существует? Строго говоря, на C# завязываться не обязательно, но тогда понадобится интеграция с программой на C#.
2. Насколько вообще хорошая идея использовать Roslyn в качестве скриптового движка? Может на основе шаблона сформировать генерирующий скрипт на JavaScript-е (вроде C# умеет с V8 работать) или на IronPyton (но это, вроде, уже неживой проект)... Собственно парсер шаблонов (вместо Razor и T4) написать на особо сложно, хотя и не особо хочется.
3. Если я со своей программой буду поставлять конечному пользователю необходимые для работы T4 "запчасти" от Visual Studio (например Microsoft.VisualStudio.TextTemplating.*.dll), не будет ли это нарушением лицензии? В Инете этот момент как-то вскользь упоминается...
Красота — наивысшая степень целесообразности. (c) И. Ефремов
Отредактировано 29.07.2019 8:39 stomsky . Предыдущая версия . Еще …
Отредактировано 29.07.2019 8:38 stomsky . Предыдущая версия .
Отредактировано 29.07.2019 8:38 stomsky . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.