5

Can you process T4 templates from inside a .NET application? Is that code available to be called? included in a project? licensing?

update: so it does look like you would have to use VS in some way.

John Saunders
  • 160,644
  • 26
  • 247
  • 397
BuddyJoe
  • 69,735
  • 114
  • 291
  • 466

5 Answers5

6

See Creating Custom Text Template Hosts.

John Saunders
  • 160,644
  • 26
  • 247
  • 397
4

I wrote a cleanly reverse-engineered implementation of a T4 engine for the MonoDevelop IDE. It's open-source, licensed under the permissive MIT/X11 license, so you are free to embed the engine in your app or redistribute it. There's also an implementation of the TextTransform.exe command-line tool, and some APIs in the Mono.TextTemplating namespace to aid in hosting the engine.

The only real missing feature right now is custom directive processors - but patches for this are welcome :-)

You can get the code from monodevelop/main/src/addins/TextTemplating in Mono SVN.

Mikayla Hutchinson
  • 16,113
  • 2
  • 44
  • 50
2

As I understand it, T4 is a part of visual studio and cannot be redistributed without it. At the minimum, you will need to redistribute VS shell with your application.

Oleg Sych
  • 6,548
  • 36
  • 34
1

T4 is unfortunately tied to Visual Studio at the moment. I believe Clarius are working on a CodeGen version of their tools which may support automation, but they haven't finalised a feature set yet, plus it's going to be a commercial product. (More info: http://www.visualt4.com/features.html.) Until then, you'll have to either use classic codegen techniques (effectively writing your own T4), or go down the Visual Studio Shell + SDK route which Oleg mentions (more info: http://msdn.microsoft.com/en-us/vsx2008/products/bb933751.aspx).

If you don't have to use the T4 syntax, then the CodeSmith product may do what you require. It includes an API for writing templates and generating code from them. It's a well-respected commercial product, but I haven't used it myself. There's an online help guide, and the API reference is here: http://www.codesmithtools.com/help/Default.aspx##CodeSmith.chm/Using_the_CodeSmith_API.html.

I hope this helps. Best of luck!

Dave R.
  • 7,206
  • 3
  • 30
  • 52
1

For processing T4 templates you have to use Microsoft.VisualStudio.TextTemplating.dll but I don't think that you could redistribute this assembly

Regards Muse VSExtensions

BALKANGraph
  • 2,031
  • 1
  • 15
  • 16