Todd Davis
Todd Davis

Reputation: 6035

Control the filename generated by a T4 template?

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

Upvotes: 13

Views: 9308

Answers (2)

Rolf Cerff
Rolf Cerff

Reputation: 231

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.

Upvotes: 23

Nico
Nico

Reputation: 2110

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.

Upvotes: 3

Related Questions