Информация об изменениях

Сообщение Re[3]: Introducing C# Source Generators от 02.05.2020 12:38

Изменено 02.05.2020 12:41 hi_octane

Re[3]: Introducing C# Source Generators
МР>- получает на вход текущий контекст компиляции
...
МР>А весь Roslyn-овский контекст (готовая модель) у вас при этом будет.
Так контекст у всех желающих есть со времён compiler-as-a-service. MSBuildWorkspace.Create(), грузится солюшн и готово.
То есть именно эту задачу люди которым такое было нужно — решили стандартным, документированным способом, годы тому назад. В 2020-м от создателей компилятора хочется чего-то, что существующими способами сделать невозможно, или хотябы чего-то что задачу серьёзно упрощает.

МР>P.S. Я, кстати, плохо представляю, как Razor использовать для генерации C# кода.

МР>Вы пробовали? Как впечатления? Можете поделиться?
По сравнению с квазицитированием в Nemerle — все шаблонизаторы отстой. Но по сравнению с другими способами генерировать C# код — получается хотя-бы раскрашено достаточно чтобы код не было write-only, за счёт раскраски. Также работает автокомплит по моделям — это полезно из-за развесистых рослиновских иерархий которые передаются из шаблона в шаблон. Удобно что у разора всё очень хорошо с иерархическими шаблонами — один шаблон идёт по файлам, другой по методам, и т.д.

Выглядит хреновато, но однозначно не write-only. Этот код писали и дописывали разные люди. И что особенно приятно — отладчик шаблоны подхватывает, когда сталкиваешься с неожиданными приколами рослина, можно поставить брякпойнт и разобраться по месту.
Re[3]: Introducing C# Source Generators
МР>- получает на вход текущий контекст компиляции
...
МР>А весь Roslyn-овский контекст (готовая модель) у вас при этом будет.
Так контекст у всех желающих есть со времён compiler-as-a-service. MSBuildWorkspace.Create(), грузится солюшн и готово.
То есть именно эту задачу люди которым такое было нужно — решили стандартным, документированным способом, годы тому назад. В 2020-м от создателей компилятора хочется чего-то, что существующими способами сделать невозможно, или хотябы чего-то что задачу серьёзно упрощает.

МР>P.S. Я, кстати, плохо представляю, как Razor использовать для генерации C# кода.

МР>Вы пробовали? Как впечатления? Можете поделиться?
По сравнению с квазицитированием в Nemerle — все шаблонизаторы отстой. Но по сравнению с другими способами генерировать C# код — получается хотя-бы раскрашено достаточно чтобы код не было write-only, за счёт раскраски. Также работает автокомплит по моделям — это полезно из-за развесистых рослиновских иерархий которые передаются из шаблона в шаблон. Удобно что у разора всё очень хорошо с иерархическими шаблонами — один шаблон идёт по файлам, другой по методам, и т.д.

Выглядит хреновато, но однозначно не write-only. Этот код писали и дописывали разные люди. И что особенно приятно — отладчик шаблоны подхватывает, когда сталкиваешься с неожиданными приколами рослина, можно поставить брякпойнт и разобраться по месту. Кстати — на скриншоте Type.ToDisplayString() — это самый что ни на есть контекст, код полученный рослином из сорцов.