Come utilizzare i modelli di generazione del codice T4 con progetti VS C ++?
-
20-08-2019 - |
Domanda
I file modello T4 sono automaticamente riconoscibili dall'IDE nei progetti C #, ma non ho idea di come possano essere integrati nei progetti C ++ (oltre all'utilizzo dei file make).
Qualche idea?
Soluzione
I file modello T4 possono essere integrati nei progetti C ++, ma è un po 'più lavoro che con un progetto C # / VB. Crea un nuovo file di testo nel tuo progetto C ++ e dagli un'estensione .tt. Quindi scrivi il tuo modello normalmente. Un progetto C ++ ha quindi bisogno di ulteriore lavoro per farlo trasformare i modelli. Il modo rapido e sporco per farlo funzionare è stato quello di aggiungere un passaggio di creazione personalizzato e farlo chiamare & Quot; C: \ Programmi \ File comuni \ Microsoft Shared \ TextTemplating \ 1.1 \ TextTransform.exe & Quot; direttamente. Un altro modo che ho scoperto è stato quello di aggiungere un'attività personalizzata di MSBuild. Le istruzioni sono disponibili qui
Questa pagina contiene ulteriori informazioni e alcuni buoni collegamenti ad altre pagine sull'utilizzo del codice T4 generazione.
Altri suggerimenti
L'attività di MSBuild non funzionerà poiché si tratta di un file vcproj (C ++), pertanto viene utilizzato vcbuild. Il modo più semplice per compilare la tt è aggiungere un passaggio di compilazione personalizzato come di seguito ..
"C:\Program Files (x86)\Common Files\Microsoft Shared\TextTemplating\1.1\TextTransform.exe" -out "$(ProjectDir)\VSProject.cpp" -I "$(ProjectDir)" "$(ProjectDir)\VSProject.tt"
Ho trascorso diverse ore a studiare la soluzione Task di MSBuild sopra ed è abbastanza buona per il codice gestito ma non riesco a vedere alcun modo per usarlo per C ++ (barra che converte vcproj in csproj eek)
Per Visual Studio 2017 (e forse 2015?)
I comandi elencati nelle altre risposte sono in parte errati, poiché il file TextTransform.exe
è stato spostato in una nuova directory: la devenv
cartella principale, ad es .:
C:\Progra~1\Visual Studio 2017\Enterprise\Common7\IDE
Il comando ora dovrebbe essere aggiornato al seguente:
"$(DevEnvDir)TextTransform.exe" -out "$(ProjectDir)xxx.cpp" "$(ProjectDir)xxx.tt"
dove xxx
è il nome del file .tt
file modello