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

Сообщение А кто у нас по T4 спец? от 01.04.2016 13:18

Изменено 01.04.2016 13:19 Sinix

Подскажите, в какую сторону копать, чтоб правильно сделать следующее:

1. Есть файл \src\Assertions\Code.cs.

2. Надо рядышком положить DebugCode.tt, который будет копировать содержимое Code.cs, добавлять к имени класса префикс Debug и заменять
[DebuggerHidden]
на
[Conditional(DebugCondition), DebuggerHidden]


3. С code model извращаться не надо, достаточно простой дубовой замены регексами. То, что не должно попасть в DebugCode вытащу в partial-класс.

4. Очень желательно, чтобы шаблон можно было использовать в нескольких местах (T4 вроде бы умеет include?)
Чтобы если в будущем появился другой класс ассертов, можно было сослаться на тот же шаблон, а не копипастить и не поддерживать правки в обоих копиях.


Сам что-то похожее уже делал, но результат получился абсолютно неподдерживаемый. Да и T4 с тех пор основательно подзабыл.

Собственно что интересует:

1. Что из инструментов/расширений студии нужно ставить?
2. Ссылки на статьи/похожие примеры.

Заранее спасиб!
Подскажите, в какую сторону копать, чтоб правильно сделать следующее:

1. Есть файл \src\Assertions\Code.cs.

2. Надо рядышком положить DebugCode.tt, который будет копировать содержимое Code.cs, добавлять к имени класса префикс Debug и заменять
[DebuggerHidden]
на
[Conditional(DebugCode.DebugCondition), DebuggerHidden]


3. С code model извращаться не надо, достаточно простой дубовой замены регексами. То, что не должно попасть в DebugCode вытащу в partial-класс.

4. Очень желательно, чтобы шаблон можно было использовать в нескольких местах (T4 вроде бы умеет include?)
Чтобы если в будущем появился другой класс ассертов, можно было сослаться на тот же шаблон, а не копипастить и не поддерживать правки в обоих копиях.


Сам что-то похожее уже делал, но результат получился абсолютно неподдерживаемый. Да и T4 с тех пор основательно подзабыл.

Собственно что интересует:

1. Что из инструментов/расширений студии нужно ставить?
2. Ссылки на статьи/похожие примеры.

Заранее спасиб!