Control the filename generated by a T4 template?

别等时光非礼了梦想. 提交于 2019-12-22 04:01:17

问题


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


回答1:


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.




回答2:


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.



来源:https://stackoverflow.com/questions/14607395/control-the-filename-generated-by-a-t4-template

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!