Sto suddividendo il codice T4 in file separati per modularità e riutilizzo, ma sto scoprendo che ogni file mi costa una riga vuota in uscita. Ad esempio:Modelli T4 - evitare le righe vuote dai file inclusi
Se Include.tt elenca altri 3 file * .tt, ottengo 3 righe vuote prima dello spazio dei nomi. Mentre aggiungo il codice e lo divido in file * .tt separati, questo spazio vuoto continua a crescere. In effetti, ho riunito tutti i file di inclusione in un singolo Include.tt, sperando che questo mi costerà solo una riga vuota. Non è stato così. Ricevo ancora una riga vuota per ogni file elencato in Includes.tt. C'è un modo per evitarlo?
Edit: partendo dal presupposto che non sto facendo solo un errore muto (e mi auguro sinceramente che io sono), il problema non è così banale come può sembrare a prima vista:
a) riutilizzo e modularità tramite i file T4 inclusi è vecchio come T4 stesso ed è stato menzionato nell'ultimo articolo di MSDN Magazine: "Gestire la complessità nelle soluzioni di generazione di codice T4".
b) Se il codice viene generato automaticamente, non significa che sia corretto perché è formattato in modo errato o non è leggibile.
c) Con la soluzione corrente, nel mio caso, per ogni file .cs generato da il lettore dovrebbe scorrere per una pagina vuota finché non inizia a vedere del testo generato. Tutto perché ho diviso la mia generazione di codice tra più file .tt inclusi. Questo non sembra giusto.
Ciao Tony - questo è un po 'un retaggio delle nostre prime versioni. Ora siamo un po 'dispiaciuti di "aggiustarlo" in quanto ciò romperebbe la retrocompatibilità per le persone che hanno utilizzato la soluzione alternativa.Ci siamo divertiti con l'idea di un flag di attivazione, qualcosa del tipo "smarterParsing = true", ma non mi dilungo troppo a testare due codepath di parsing a questo punto: – GarethJ
Lo stesso trucco funziona anche con Single Include - assicurati che non ci siano caratteri tra il tag di chiusura dell'inserimento e l'istruzione successiva (sia letterale o
ViktorZ
Il vero motivo è che ogni modello generato (è un codice cs) ha un \ r \ n in 'pubblico stringa virtuale TransformText() { this.Write ("\ r \ n"); ', quindi la risposta sta funzionando semplicemente perché la nuova riga è stata aggiunta premendo return dopo che ogni modello incluso è stato omesso. – Sebastian