Mono.TextTemplating (T4 호환 구현체)을 파일 입출력 없이 사용하기

최근 개발 중인 프로젝트에서 많은 양의 C# 코드를 자동 생성하는 동작을 구현하면서, StringBuilder와 Interpolation으로 커버하다보니 코드가 너무 읽기 어려워져서 오랫만에 T4 관련 내용을 찾아보고 있었습니다.

그러다 Mono에서 Visual Studio의 T4와 대응되는 자체 구현체를 NuGet 패키지로 만들어서 올려둔 것이 있어서 바로 찾아서 써봤는데, 아쉽게도 T4 유틸리티를 구현하는데 딱 필요한 수준의 안내와 문서화만 되어있어서 제가 원하는대로 쓰기 좀 어려웠습니다.

그래서 약간의 리버스 엔지니어링을 거쳐서 파일로 템플릿을 만들고 쓰는 형태가 아닌, 인메모리 입출력 방식으로도 T4 엔진을 이용할 수 있겠다는 결론을 얻어서 간단히 코드 조각을 만들어봤습니다.

텍스트 템플릿화와 관련해서 방법을 찾고 계신 분들께 도움이 될 것 같아 Gist를 공유합니다.

4 Likes

(추가)

만약에 템플릿 엔진을 반복해서 구동해야 한다면 T4 엔진은 기능은 풍부하지만 속도가 매우 느리기 때문에, Fluid나 다른 대체 엔진을 사용하는 것이 성능에 도움이 됩니다.

3 Likes