Cómo utilizar T4 y Visual Studio para extender una clase parcial

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

  •  22-08-2019
  •  | 
  •  

Pregunta

quería usar T4 para generar las propiedades de una clase parcial. Estoy corriendo en un problema de configuración en mi archivo .TT está en el mismo proyecto que el archivo de clase quiero extender. Así que si tengo que incluir el montaje en el .TT depositarlas en llegar de bloqueo. He intentado hacer una línea de comandos en la pre-construcción, pero el problema no es que VS siempre quiere volver a compilar el archivo .TT con el proyecto.

La única solución que se me ocurre es renombrar los archivos .tt decir .t4 y luego usar un comando pre-construcción con TextTransform salida privado para crear el archivo .cs en el directorio del proyecto.

Puede alguien pensar en una forma más limpia de hacer esto?

¿Fue útil?

Solución

Si se asume que el bloqueo es causado por el uso de la plantilla de Reflexión para leer los metadatos de la clase parcial necesita ampliar, se puede resolver el problema de bloqueo si se utiliza CodeModel. Esta API se proporciona por Visual Studio y le permite obtener los metadatos directamente desde el archivo de origen, sin la necesidad de compilar la clase parcial o cargar el archivo DLL compilado. Aquí es un ejemplo de un generador de código T4 que utiliza este enfoque: http://www.olegsych.com/2008/07/t4-template-for-generating-sql-view-from-csharp-enumeration

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