tutorial texto template puede plantilla generation generate for esta equipo enabled ejecucion dañar code classes c# code-generation t4

texto - template t4 c#



Sangría incorrecta con plantillas t4 (2)

Actualmente estoy trabajando con plantillas T4 y he notado que a veces el código no está sangrado correctamente, ¿cómo puedo evitar eso?

Por ejemplo tengo este código en la plantilla.

} <# } #> this.cmbDecisionList.Dat = dataSource; this.btnDec.Enabled = dataSource.Count > 0; }

y en la clase generada es como

} this.cmbDecisionList.Dat = dataSource; this.btnDec.Enabled = dataSource.Count > 0; }


Creo que es bueno que te esfuerces por obtener un código generado legible. Nos sentaremos e intentaremos depurar el código generado de vez en cuando, por lo que es bueno si es fácil para los ojos (nunca editamos el código generado).

He adoptado un patrón en el que podría sacrificar cierta legibilidad de la plantilla para obtener la legibilidad del código generado.

Generated code <# T4 statements #> Generated code

IE #> siempre aparece después de una nueva línea y una nueva línea se agrega inmediatamente después.

Su código entonces sería cambiado en:

} <# } #> this.cmbDecisionList.Dat = dataSource; this.btnDec.Enabled = dataSource.Count > 0; }

De esa manera el código generado tiende a formatearse como se pretende.

Probablemente no sea la única forma de conservar el formato como está previsto, pero es la que yo uso.

Espero que esto ayude.


Permítame ilustrar su problema reemplazando espacios con puntos.

} ....<# } #> ....this.cmbDecisionList.Dat = dataSource; this.btnDec.Enabled = dataSource.Count > 0; }

y en la clase generada es como

} ........this.cmbDecisionList.Dat = dataSource; this.btnDec.Enabled = dataSource.Count > 0; }

Ahora, vamos a quitar los puntos anteriores.

} <# } #> ....this.cmbDecisionList.Dat = dataSource; this.btnDec.Enabled = dataSource.Count > 0; }

y en la clase generada es como

} ....this.cmbDecisionList.Dat = dataSource; this.btnDec.Enabled = dataSource.Count > 0; }