¿Cómo agregar una dependencia a un archivo arbitrario a una plantilla T4?

StackOverflow https://stackoverflow.com/questions/280748

  •  07-07-2019
  •  | 
  •  

Pregunta

Tengo una plantilla T4 que genera clases a partir de un archivo xml.

¿Cómo puedo agregar una dependencia entre el archivo xml y el archivo de plantilla para que cuando se modifique el archivo xml la plantilla se vuelva a ejecutar automáticamente sin elegir " Ejecutar herramienta personalizada " desde el menú contextual?

¿Fue útil?

Solución

No creo que T4 admita la transformación automática de plantillas basada en una dependencia externa. Estoy de acuerdo con Marc: si solo tiene un archivo externo, puede crear una & Quot; herramienta personalizada & Quot; para su archivo XML o simplemente use ttxgen . Sin embargo, no creo que este enfoque se amplíe a un escenario en el que la plantilla t4 dependa de más de un archivo. Es posible que deba crear un paquete de Visual Studio para manejar eso.

Otros consejos

¿Cuánto tiempo tarda la herramienta en ejecutarse? Una opción perezosa podría ser simplemente editar el csproj de modo que siempre ejecute la herramienta durante la compilación (presumiblemente a través de <Exec ... /> o un archivo targets personalizado) - por supuesto, esto depende de que se ejecute rápidamente.

Otra forma sería escribir una cuña que funcione como " Herramienta personalizada " en VS, y simplemente llama al exe existente (o lo que sea) con los argumentos correctos. No es trivial, pero factible ( ver aquí ) - Creo Esto supuestamente juega bastante bien con la detección de cambios. De hecho, está en mi lista de cosas que hacer para un proyecto actual, así que lo descubriré pronto ...

Puede usar AutoTT Visual Studio Extension.

Esta extensión permite configurar disparadores que ejecutarán una plantilla T4.

Uno de los posibles desencadenantes es un cambio de archivo. En el archivo de configuración de muestra en la página AutoTT, la expresión regular para los desencadenantes coincide con todos los archivos en las carpetas especificadas (Controladores, Contenido), pero puede cambiarlo para que se ejecute solo con un archivo específico.

Chirpy es otra opción para hacerlo. Y también T4 Regenerator , que lo hace de una manera diferente.

¿Ha intentado usar < # @ xsd ?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top