metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2014-02-15 01:59 pm

Безумие и отвага

Вопрос на собеседование:
Вам дается 100 проектов, содержащих t4 шаблоны, написанные старообрядческими псоглавцами.
Ваша задача написать MSBuild скрипт, который перегенерирует весь код, созданный из этих шаблонов.

Смех тут в том, что студия перегенерирует код только если зайти в t4 шаблон и пересохранить его, чтобы время изменилось. А изменение файлов, включенных через include не вызывает перегенерацию.

[identity profile] anonim-legion.livejournal.com 2014-02-15 03:18 pm (UTC)(link)
А вы вроде с F# работали, у него есть мощнейшая система макросов. На ней кодогенерацию не делали?

[identity profile] metaclass.livejournal.com 2014-02-15 03:22 pm (UTC)(link)
В F# вроде макросов нет же? TypeProvider-ы и то начиная с какой-то версии, которую я у себя на 2010 студию воткнуть не могу.

[identity profile] jakobz.livejournal.com 2014-02-15 03:38 pm (UTC)(link)
Да в дотнете не сильно проблема генерировать MSIL налету - все имеется. Там написать компилятор какого-нибудь своего паскаля - задача для продвинутого студента. Нахер T4 - не ясно вообще.