Sto provando a generare codice su ogni build del mio progetto utilizzando VS2012.Generazione di T4 su Build utilizzando VS 2012
Ho 3 progetti nella mia soluzione:
- progetto 1 ha alcune classi
- progetto 2 ha il modello generico
- progetto 3 ha il modello che leggere un file JSON e quindi chiamare il generico modello modulo progetto 2 per generare il suo file.
Quando faccio clic su Costruisci/Trasforma tutti i modelli T4, non ci sono problemi, la generazione va bene.
Ma sto provando a configurare la mia generazione per includere questo passaggio automaticamente ad ogni generazione.
Ho aggiunto questo codice al mio 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"/>
ho inventata io il percorso "\ Microsoft \ VisualStudio \ v11.0 \ TextTemplating \ Microsoft.TextTemplating.targets" Da quello che trovato sul mio pc L'esempio l'ho preso dal era: get-visual-studio-to-run-a-t4-template-on-every-build
Il problema deriva da questa linea che sto usando: < # @ include file = "$ (SolutionDir) \ xxx \ yyy \ zzz \ mytemplate.tt">
e ricevo l'errore:
riuscite a risolvere includere testo per il file: D: \ Projects \ pppp \ qqq \ eeee \ $ (SolutionDir) \ xxx \ yyy \ zzz \ mytemplate.tt
Dato che il modello funziona bene quando viene generato "a mano" (Costruisci/Trasforma tutti i modelli T4), mi chiedo quale potrebbe essere il problema per generarlo in fase di costruzione.
Qualche idea?
Che potrebbe funzionare con include ma per quanto riguarda il montaggio? Ho usato $ (SolutionDir) per individuarli, ho lo stesso tipo di errore se provo il percorso relativo. Il nome dell'assembly o il codebase forniti non erano validi. Grazie per il tuo aiuto. – Arthis
Ho finalmente utilizzato il percorso assoluto perché tutto il resto funzionava correttamente e avevo bisogno di andare avanti. – Arthis
Non sono sicuro del problema con il percorso relativo, ma puoi provare il metodo 'Host.ResolvePath' –