Como usar T4 modelos de geração de código com projetos VS C ++?
-
20-08-2019 - |
Pergunta
arquivos de modelo T4 são reconhecíveis automaticamente pelo IDE em projetos C #, mas eu não tenho nenhuma pista sobre projectos ++ como eles podem ser integrados em C (à excepção de usar arquivos make).
Todas as idéias?
Solução
Os arquivos de modelo T4 podem ser integrados em projetos C ++, mas é um pouco mais de trabalho do que com um projeto C # / VB. Criar um novo arquivo de texto em seu projeto C ++ e dar-lhe uma extensão .tt. Em seguida, escreva o seu modelo como normal. projecto A C ++, em seguida, precisa de mais trabalho para obtê-lo para transformar os modelos. A maneira rápida e suja que eu tenho que trabalhar era para adicionar um passo de compilação personalizado e tê-lo chamar "C: \ Program Files \ Common Files \ Microsoft Shared \ TextTemplating \ 1.1 \ TextTransform.exe" diretamente. Outra maneira que eu encontrei foi a de adicionar uma tarefa MSBuild personalizada. Instruções podem ser encontradas aqui
Esta página tem mais informações e alguns bons links para outras páginas sobre o uso de código T4 geração.
Outras dicas
MSBuild tarefa não vai como este é um arquivo vcproj (C ++) para VCBuild é usado trabalho. A maneira mais fácil de obter a tt compilado é adicionar um passo de compilação personalizado como abaixo ..
"C:\Program Files (x86)\Common Files\Microsoft Shared\TextTemplating\1.1\TextTransform.exe" -out "$(ProjectDir)\VSProject.cpp" -I "$(ProjectDir)" "$(ProjectDir)\VSProject.tt"
Eu passei várias horas investigando a solução MSBuild tarefa acima e é bom bastante para código gerenciado, mas eu não consigo ver nenhuma maneira de usá-lo para C ++ (bar converter o vcproj para Eek csproj)
Para Visual Studio 2017 (e talvez 2015?)
Os comandos listados em outras respostas são parcialmente incorrectas, como o TextTransform.exe
arquivo foi movido para um novo diretório: a pasta devenv
raiz, por exemplo:.
C:\Progra~1\Visual Studio 2017\Enterprise\Common7\IDE
O comando agora deve ser atualizado para o seguinte:
"$(DevEnvDir)TextTransform.exe" -out "$(ProjectDir)xxx.cpp" "$(ProjectDir)xxx.tt"
onde xxx
é o nome do arquivo de modelo .tt
yout arquivo