Estoy intentando generar código en cada compilación de mi proyecto utilizando VS2012.Generando T4 en compilación utilizando VS 2012
tengo 3 proyectos en mi solución:
- proyecto 1 tiene algunas clases
- proyecto 2 tiene la plantilla genérica
- proyecto 3 tiene la plantilla que lee un archivo JSON y luego llamar a la genérica plantilla del proyecto 2 para generar su archivo.
Cuando hago clic en Crear/Transformar todas las plantillas T4, no hay ningún problema, la generación va bien.
Pero estoy tratando de configurar mi compilación para incluir este paso automáticamente en cada compilación.
He añadido este código a mi csproj:
<Import Project="$MsBuildToolsPath)\Microsoft.CSharp.Targets" />
<PropertyGroup>
<TransformOnBuild>true</TransformOnBuild>
<OverWriteReadOnlyOutputFiles>true</OverWriteReadOnlyOutputFiles>
</PropertyGroup>
<Import Project="$(MSBuildExtensionPath32)\Microsoft\VisualStudio\v11.0\TextTemplating\Microsoft.TextTemplating.targets"/>
he hecho yo mismo el camino "\ Microsoft \ VisualStudio \ v11.0 \ TextTemplating \ Microsoft.TextTemplating.targets" de lo que yo encontrado en mi pc. El ejemplo la aparté de era: get-visual-studio-to-run-a-t4-template-on-every-build
El problema proviene de esta línea que estoy utilizando: < # @ include file = "$ (SolutionDir) \ xxx \ yyy \ zzz \ mytemplate.tt">
y recibo el error:
no lograron resolver incluir texto para el archivo: D: \ Proyectos \ pppp \ qqq \ eeee \ $ (SolutionDir) \ xxx \ yyy \ zzz \ mytemplate.tt
Como la plantilla funciona bien cuando se genera "a mano" (Build/Transform All T4 Templates), me pregunto cuál podría ser el problema para generarla en el momento de la compilación.
¿Alguna idea?
Eso podría funcionar con incluir pero ¿qué ocurre con el montaje? Usé $ (SolutionDir) para localizarlos, tengo el mismo tipo de error si pruebo la ruta relativa. El nombre de ensamblado dado o base de código no es válido. Gracias por tu ayuda – Arthis
Finalmente utilicé la ruta absoluta porque todo lo demás funcionaba correctamente y necesitaba seguir adelante. – Arthis
No estoy seguro de cuál fue el problema con la ruta relativa, pero puedes probar el método 'Host.ResolvePath' –