Chris Melinn
Chris Melinn

Reputation: 2076

For what purposes have YOU used T4?

T4 has existed for several years in Visual Studio, but doesn't get a lot of attention. However, for those that know it, there seems to be some very creative and useful purposes.

I am researching some different ways that T4 is used, and I would appreciate to hear how YOU may have used it for real life scenarios. I am primarily interested in non-standard and creative uses.

Some interesting examples:

  1. Phil Haack uses T4 to create static CSS files from .less
  2. To Generate WPF and Silverlight Dependency Properties using T4 Templates

Note: I realize this is a discussion-oriented question, but the answers could be helpful to others. I have tagged it as subjective and also marked as "community wiki", so please allow the question to remain open. Thanks!

Upvotes: 28

Views: 3315

Answers (9)

lomaxx
lomaxx

Reputation: 115773

I've used the T4 Templates within the sharp-architecture to generate everything from models to controllers to basic views.

Definitely worth checking out, even if you just want to see some advanced examples of T4 templates in action

Upvotes: 4

Cohen
Cohen

Reputation: 2720

I've used T4 to generate:

  • proxies (design time, for injecting/wrapping monitoring code/logging/... in a very specific exposed api).
  • interface generation for a one-on-one interface/class mapping
  • replace reflection code by "directly/real" calling code (maintenance advantage of reflection code, but performance of the actual code) for instance when allowing access to properties through an indexer, or something in that direction.
  • xml generation for a java project (couldn't find a T4-like solution for java, that is easily shared within a company, T4 is easy because it's build in and you can run it from command line)
  • generate enums from a master database (we generated them both for a delphi-code base and .Net code base)

Upvotes: 2

Nathan
Nathan

Reputation: 2775

I use T4 to:

  1. Generate CRUD SQL Server and Oracle scripts.
  2. Generate Data Access Layer, based on a database schema
  3. Layer Generate Business Logic Layer, based on a database schema
  4. Generate ASP.Net webforms, both HTML and codebehind, based on a database schema (scafolding).

It gives me a good, quick, simple, basic starting point for my projects.

And the best is I'm in control.

Here you can download an example of my templates

Upvotes: 4

mattmc3
mattmc3

Reputation: 18325

I am not a big fan of the stringy-ness of app.config/web.config, so I use T4 to read those files and make an AppSettings/WebSettings class that wraps the connection strings and key/values in a real class. This means that, as long as I always use AppSettings.SomeValue to reference my app.config, I get compile time checking, which is really nice.

Upvotes: 8

Tim Fischer
Tim Fischer

Reputation: 1

See here for a list of more than 30 T4 Generators from the community in several areas including ASP.NET,WCF, UML, ADO.NET, .NET

http://t4-editor.tangible-engineering.com/How-Do-I-With-T4-Editor-Text-Templates.htm

Upvotes: 1

John Saunders
John Saunders

Reputation: 161773

T4 Templates are used heavily in the Web Service Software Factory (Service Factory).

Upvotes: 1

Chuck
Chuck

Reputation: 53

Check out this podcast on T4 by Scott Hanselman talking with Kathleen Dollard.
http://www.hanselminutes.com/default.aspx?showID=170

Upvotes: 2

Robert Harvey
Robert Harvey

Reputation: 180787

LINQ to SQL templates for T4
http://l2st4.codeplex.com/

Templates replicating the functionality of the SQLMetal and the LINQ to SQL classes designer code-generators for both C# and VB.Net requiring just Visual Studio 2008.

Upvotes: 2

womp
womp

Reputation: 116977

SubSonic 3.0 makes heavy use of T4 templates for generating your entity code.

Essentially it calls GetSchema() on your database connection and runs each table it finds through the T4 entity template. The great thing about using T4 here is that if you don't like the way it's handling your database schema, just edit the template.

I've tweaked the T4's to handle MySQL databases better for my situation, as I make use of many tinyint columns which the default T4 maps to byte types. A quick edit to the T4 gave me the type I wanted instead for my application entities.

Upvotes: 2

Related Questions