2011-01-24 21 views
16

Ho un modello T4 (mycode.tt) che genera un file cs. Di solito faccio clic destro sul file tt e selezionare RunCustomTool che internamente prende un file xml e genera codice per me. Ora voglio eseguire lo strumento personalizzato utilizzando un'applicazione windows # c. Quindi, se clicchi su un pulsante, voglio eseguire lo Strumento personalizzato. È possibile eseguire CustomTool da C#.Esecuzione di un modello T4 mediante C#

Edit:

ho 2 file TT e uno di loro non ha un file cs codebehind. Ma un altro ha un file .cs associato con esso e sto invocando il metodo TransformText() del secondo file dal primo file .tt. Quindi ho bisogno di invocare il primo file. Quindi non posso usare il metodo TransformText(). C'è un modo per chiamare dinamicamente il file textTemplate?

risposta

7

Raccomando la rotta preelaborata come risposta sopra di @jb_.

In alternativa, se è necessario che i modelli siano ancora modificabili senza una fase di compilazione da utilizzare con l'applicazione C# personalizzata e l'applicazione verrà distribuita solo su macchine accanto a Visual Studio, è possibile scrivere un host personalizzato.

http://msdn.microsoft.com/en-us/library/bb126519.aspx

17

È possibile raggiungerlo facilmente quando si utilizza VS2010. Se aggiungi un nuovo file al progetto, scegli un file modello di testo preelaborato. È possibile modificare il modello normalmente. Invece di generare direttamente l'output, il file genera il codice che viene generato normalmente. So che sembra confusionario. Ma quello che vedi nel tuo file di output è il codice generato dal text templating toolkit per ottenere il tuo output (più o meno).

Questo è un breve esempio di un modello di testo pre-elaborato denominato "TestTemplate.tt" e come si usa nel codice:

Il TT-file:

<#@ template language="C#" #> 
Some output. 

Codice:

using System; 
using System.Diagnostics; 

namespace Test 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      TestTemplate testTemplate = new TestTemplate(); 
      Debug.Print(testTemplate.TransformText()); 
     } 
    } 
} 
+5

Per un modello esistente è possibile modificare lo strumento personalizzato nelle proprietà da '' TextTemplatingFileGenerator' a TextTemplatingFilePreprocessor'. –

+0

Come fornite i parametri? – Georg

Problemi correlati