Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Control the filename generated by a T4 template?

Tags:

t4

How can I instruct a T4 template to generate the resulting file with a given file name?

I'll try to be more clear. Let's say I have a template called Insert.tt that generates code to insert a record into a table. It has an output extension of "sql", so it creates a file called:

Insert.sql

That's OK, but I'd like the file name to reflect whatever it is I'm trying to do. Let's say that the name of the table I'm generating an Insert for is stored in <#= TableName #>. I'd like to pass that to the template generator and have it use that to save the resulting file.

i.e. <# SaveTemplateAs("Insert" + TableName); #>

So let's say I generate Insert statements for tables User, Address and Phone.

I want the resulting files to be named InsertUser.sql, InsertAddress.sql and InsertPhone.sql.

I'm pretty sure this can be done as I've seen some custom extensions to generate multiple files from a single template, but I'm not understanding a simple (not overkill) way to make this happen.

Thanks

like image 284
Todd Davis Avatar asked Jan 30 '13 15:01

Todd Davis


People also ask

What are T4 files?

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".


2 Answers

Unfortunately that seems not be possible in the .tt file itself. But you can control output file name in the .csproj file of the project where the text template resides. Unload the project from Visual Studio solution and open the project file e.g. .csproj directly in a text editor.

There you find the reference of the template file.

The node <LastGenOutput> controls the output filename. Here you can choose a file name you want.

like image 134
Rolf Cerff Avatar answered Sep 17 '22 21:09

Rolf Cerff


As far as I know, there is no built-in functionality in T4 to generate multiple output files. But you're right, there are plenty of samples out there that tell you how to deal with multiple output files.

Maybe this blog post might help you solve your problem:

http://t4-editor.tangible-engineering.com/blog/how-to-generate-multiple-output-files-from-a-single-t4-template.html

This editor is for free and comes with free samples - one including code to split the T4 output to different files with different names and/or extensions.

like image 25
Nico Avatar answered Sep 17 '22 21:09

Nico