Pregunta

Los archivos de plantilla T4 son reconocibles automáticamente por el IDE en proyectos de C #, pero no tengo idea de cómo se pueden integrar en proyectos de C ++ (aparte de usar archivos make).

¿Alguna idea?

¿Fue útil?

Solución

Los archivos de plantilla T4 se pueden integrar en proyectos C ++, pero es un poco más trabajo que con un proyecto C # / VB. Cree un nuevo archivo de texto en su proyecto C ++ y asígnele una extensión .tt. Luego escriba su plantilla como de costumbre. Un proyecto de C ++ necesita más trabajo para transformar las plantillas. La manera rápida y sucia de hacerlo funcionar fue agregar un paso de compilación personalizado y hacer que llame a & Quot; C: \ Archivos de programa \ Archivos comunes \ Microsoft Shared \ TextTemplating \ 1.1 \ TextTransform.exe & Quot; directamente. Otra forma que encontré fue agregar una tarea personalizada de MSBuild. Las instrucciones se pueden encontrar aquí

Esta página tiene más información y algunos enlaces a otras páginas sobre cómo usar el código T4 generación.

Otros consejos

MSBuild Task no funcionará ya que este es un archivo vcproj (C ++), por lo que se usa vcbuild. La forma más fácil de compilar el tt es agregar un paso de compilación personalizado como se muestra a continuación ...

"C:\Program Files (x86)\Common Files\Microsoft Shared\TextTemplating\1.1\TextTransform.exe" -out "$(ProjectDir)\VSProject.cpp" -I "$(ProjectDir)" "$(ProjectDir)\VSProject.tt"

Pasé varias horas investigando la solución MSBuild Task anterior y es bastante buena para el código administrado, pero no veo ninguna forma de usarla para C ++ (barra que convierte el vcproj en csproj eek)

Para Visual Studio 2017 (¿y quizás 2015?)

Los comandos enumerados en las otras respuestas son parcialmente incorrectos, ya que el archivo TextTransform.exe se ha movido a un nuevo directorio: la carpeta raíz devenv, por ejemplo:

C:\Progra~1\Visual Studio 2017\Enterprise\Common7\IDE

El comando ahora debería actualizarse a lo siguiente:

"$(DevEnvDir)TextTransform.exe" -out "$(ProjectDir)xxx.cpp" "$(ProjectDir)xxx.tt"

donde xxx es el nombre de archivo de tu .tt archivo de plantilla

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top