Question

Lorsque je construis ma solution c #, les fichiers .tt ne créent pas les sorties de fichiers .cs. Mais si je clique avec le bouton droit de la souris sur les fichiers .tt dans l'explorateur de solutions, sélectionnez "Exécuter l'outil personnalisé". Le fichier .cs est généré, le paramètre de l'outil de génération est donc correct. Que dois-je faire pour que la solution globale soit générée afin de forcer l'outil personnalisé à s'exécuter sur les fichiers .tt?

Était-ce utile?

La solution

Paul, vous pouvez également générer du code au moment de la construction avec TextTransform.exe ou Elton Stoneman Tâche MSBuild . Gardez simplement à l’esprit le comportement des directives intégrées, telles que assembly et include est différent lorsque T4 s'exécute dans Visual Studio par rapport à la hôte de ligne de commande.

Autres conseils

Répondant à ma propre question, elles sont censées être générées au moment de la conception, conformément à cette discussion:

https://web.archive.org/web/20081227142303/http://www.olegsych.com/2008/02/t4-template-directive/

Dans Visual Studio 2013, j'ai pu obtenir que les fichiers .tt régénèrent leurs cibles en ajoutant simplement ces lignes au fichier .csproj:

<PropertyGroup>
  <!-- Get the Visual Studio version – defaults to 10: -->
  <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
  <!-- Keep the next element all on one line: -->
  <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
<!-- To enable build tasks on your development computer, install Modeling SDK for Visual Studio. https://www.microsoft.com/en-us/download/details.aspx?id=40754 -->
<Import Project="$(VSToolsPath)\TextTemplating\Microsoft.TextTemplating.targets" />
<!-- Run the Transform task at the start of every build -->
<PropertyGroup>
  <TransformOnBuild>true</TransformOnBuild>
</PropertyGroup>
<!-- Overwrite files that are read-only, for example because they are not checked out -->
<PropertyGroup>
  <OverwriteReadOnlyOutputFiles>true</OverwriteReadOnlyOutputFiles>
</PropertyGroup>
<!-- Transform every template every time -->
<PropertyGroup>
  <TransformOutOfDateOnly>false</TransformOutOfDateOnly>
</PropertyGroup>

Toutefois, pour que cela fonctionne, vous devez avoir installé la Modélisation. SDK pour Visual Studio . J'ai trouvé toutes ces informations, ainsi qu'une description plus complète des options disponibles, sur cette page: Génération de code dans un processus de construction .

Dans Visual Studio 2017 (probablement aussi dans les prochaines versions), vous devez ajouter ceci dans l'événement Pre-build:

"$(DevEnvDir)TextTransform.exe" -out "$(ProjectDir)YourTemplate.cs" "$(ProjectDir)YourTemplate.tt"

p.s. La seule solution qui a fonctionné pour moi.

p.s.s. Modifiez le chemin d'accès à votre modèle s'il ne se trouve pas dans le répertoire du projet racine.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top