tags:

views:

180

answers:

3

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?

+1  A: 

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

Marc Gravell
A: 

Have you tried using <#@ xsd?

Craig Stuntz
+2  A: 

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.

Oleg Sych