Domanda

Quando creo la mia soluzione c # i file .tt non creano gli output del file .cs. Ma se faccio clic con il pulsante destro del mouse sui file .tt uno alla volta in Esplora soluzioni e seleziono " Esegui strumento personalizzato " .cs viene generato, quindi l'impostazione dello strumento di creazione è corretta. Cosa devo fare per ottenere la creazione della soluzione complessiva per forzare l'esecuzione dello strumento personalizzato sui file .tt?

È stato utile?

Soluzione

Paul, puoi anche generare codice al momento della compilazione con TextTransform.exe o Elton Stoneman's Attività MSBuild . Basta tenere presente quel comportamento delle direttive integrate, come assembly e include è diverso quando T4 viene eseguito in Visual Studio rispetto al host della riga di comando.

Altri suggerimenti

Rispondendo alla mia domanda, dovrebbero essere generati in fase di progettazione come da questa discussione:

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

In Visual Studio 2013, sono stato in grado di ottenere i file .tt per rigenerare i loro obiettivi semplicemente aggiungendo queste righe al file .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>

Tuttavia, affinché funzioni, dovrai aver installato la Modellazione SDK per Visual Studio . Ho trovato tutte queste informazioni, insieme a una descrizione più completa delle opzioni disponibili, in questa pagina: Generazione di codice in un processo di generazione .

In Visual Studio 2017 (probabilmente anche le versioni successive), dovresti aggiungerlo nell'evento Pre-build:

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

P.S. L'unica soluzione che ha funzionato per me.

p.s.s. Cambia il percorso del tuo modello se non si trova nella directory principale del progetto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top