Text Template Transformation Toolkit
Original author(s) | Novell, Xamarin, Microsoft |
---|---|
Initial release | 2005 |
Stable release | v2.0.5
/ June 13, 2019[1] |
Repository | github |
Written in | C# |
Operating system | Linux, Windows |
Platform | .NET Framework, .NET Core, Mono |
Type | Software framework |
License | MIT License |
Website | Code Generation and T4 Text Templates |
Text Template Transformation Toolkit (usually referred to as "T4") is a free and open-source template-based text generation framework. T4 source files are usually denoted by the file extension ".tt".
Overview[]
T4 is used by developers as part of an application or tool framework to automate the creation of text files with a variety of parameters. These text files can ultimately be any text format, such as code (for example C#), XML, HTML or XAML.
T4 uses a custom template format which can contain .NET code and string literals in it, this is parsed by the T4 command line tool into .NET code, compiled and executed. The output of the executed code is the text file generated by the template.[2] T4 can also be completely run within the .NET applications via the use of the TextTransformation class which eliminates the need for the end user to have Visual Studio installed.
T4 is used within Microsoft in ASP.NET MVC for the creation of the views and controllers, ADO.NET Entity Framework for entity generation, and ASP.NET Dynamic Data.[3] It is also used outside of Microsoft in projects such as SubSonic.[4]
T4 templating is supported in Visual Studio, MonoDevelop and JetBrains Rider.[5]
Controls[]
There are four types of controls handed by the T4 template transformation engine.
Name | Syntax | Description |
---|---|---|
Directives | <#@ ... #>
|
Instructions for the transformation engine |
Standard control blocks | <# ... #>
|
Code to be executed (e.g. loops) |
Expression control blocks | <#= ... #>
|
Expressions evaluated and converted to a string |
Class feature control blocks | <#+ ... #>
|
Class and function definitions |
Criticism[]
![]() | This section contains content that is written like an advertisement. (May 2017) |
Microsoft has often been criticized[by whom?] for the lack of tooling support for T4 within the Visual Studio IDE, and relies on third parties namely Tangible Engineering,[6] however later revisions have included better tooling support.[7]
History[]
- 2005: Microsoft released the first version of T4 as an out of band release for Visual Studio 2005
- 2008: Microsoft includes it with Visual Studio 2008
- 2010: Microsoft includes it with Visual Studio 2010 which included significant new features to improve performance, usability for both template authors and tool builders and better integration into Visual Studio's DSL tools.[7]
- 2015: Visual Studio 2015 Update 2 can use C# version 6.0 features [8]
- 2017: Open source version of engine released which supports .NET Core[9]
- 2019: JetBrains adds support for T4 in Rider [10]
See also[]
- Comparison of code generation tools
- m4 (computer language)
- Smarty
References[]
- ^ "Tags · mono/t4 · GitHub". GitHub T4 repository. Retrieved 2020-01-06.
- ^ Web Templates (2013), Website templates, Website Templates South Africa, ISBN 978-1-4251-3374-0, retrieved 19 November 2013
- ^ "Fun with T4 templates and Dynamic Data - Angle Bracket Percent - Site Home - MSDN Blogs". Blogs.msdn.com. 2008-11-26. Retrieved 2012-05-17.
- ^ "SubSonic v3's T4 Templates « Daily Cycle". Gcapnias.wordpress.com. 2009-01-12. Retrieved 2012-05-17.
- ^ "Rider: The Cross-Platform .NET IDE from JetBrains".
- ^ Sych, Oleg (2007-12-22). "T4: Text Template Transformation Toolkit". Oleg Sych. Retrieved 2012-05-17.
- ^ a b "What's new in T4 in Visual Studio 2010 - [Profoundly Esoteric Image] - Site Home - MSDN Blogs". Blogs.msdn.com. 2010-04-15. Retrieved 2012-05-17.
- ^ "Code Generation and T4 Text Templates - Visual Studio (Windows)".
- ^ "Mono.TextTemplating". 22 October 2021.
- ^ "ForTea". 20 October 2021.
External links[]
- .NET
- Free and open-source software
- Microsoft free software
- Microsoft Visual Studio
- Software that uses Mono
- Software using the MIT license
- Template engines
- 2005 software
- 2008 software
- 2010 software