Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to add a dependency to a arbitrary file to a T4 template?

Tags:

c#

.net

t4

I have a T4 template that generates classes from an xml file.

How can I add a dependency between the xml file and the template file so that when the xml file is modified the template is rerun automatically without choosing "Run custom tool" from the context menu?

like image 598
Pop Catalin Avatar asked Nov 11 '08 12:11

Pop Catalin


2 Answers

I don't believe T4 supports automatic template transformation based on an external dependency. I agree with Marc - if you only have one external file, you could create a custom "custom tool" for your XML file or simply use ttxgen. However, I don't think this approach scales up to a scenario where t4 template depends on more than one file. You may need to create a Visual Studio package to handle that.

like image 119
Oleg Sych Avatar answered Nov 08 '22 00:11

Oleg Sych


How long does the tool take to execute? One lazy option might be to simply edit the csproj such that it always runs the tool during build (presumably via <Exec ... /> or a custom targets file) - of course, this depends on it being quick to execute.

Another way would be to write a shim that works as the "Custom Tool" in VS, and simply calls the existing exe (or whatever) with the right args. Not trivial, but doable (see here) - I believe this then supposedly plays fairly nicely with change detection. It is actually on my list of things to do for a current project, so I'll find out soon enough...

like image 41
Marc Gravell Avatar answered Nov 08 '22 02:11

Marc Gravell