Laden...

T4 Templates ausführen, wenn Quell-Datei gespeichert wird

Erstellt von der-andreas vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.867 Views
D
der-andreas Themenstarter:in
27 Beiträge seit 2012
vor 9 Jahren
T4 Templates ausführen, wenn Quell-Datei gespeichert wird

Ich benutze T4-Templates von Visual Studio, um Code aus einem Model zu generieren.

Ich habe eine:

  • Models.xml (das die Modelldefinition enthält)
  • Models.tt (was die Codegenerierung durchführt)

Auf die XML-Datei wird im T4-Template wie in der MSDN-Dokumentation empfohlen per Host.ResolvePath zugegriffen:

<#
var interpreter = new XemlInterpreter();
var result = interpreter.Process(Host.ResolvePath("Models.xml"));
#>

Soweit funktioniert T4 perfekt, jedoch muss ich immer auf Models.tt -> "Benutzerdefiniertes Tool ausführen" oder "Erstellen > alle T4 Vorlagen transformieren" klicken.

Ich möchte, dass beim Speichern der XML-Datei die Transformation ausgeführt wird. Ich habe in der MSDN dazu nichts gefunden, aber es muss prinzipiell funktionieren, wie man ja z.B. am Entity Framework Designer sieht.

Ich habe es durch direktes Ändern in der .csproj-Datei zumindest einmal geschafft, dass die T4-Vorlage in Visual Studio unter der XML-Datei angeordnet wird:

<None Include="Models\Models.tt">
      <Generator>TextTemplatingFileGenerator</Generator>
      <DesignTime>True</DesignTime>
      <LastGenOutput>Models.cs</LastGenOutput>
      <DependentUpon>Models.xml</DependentUpon>
    </None>

DependentUpon ist der Tag, der dies veranlasst. Das hat aber leider noch nicht dazu geführt, dass die T4-Vorlage ausgeführt wird, wenn die XML-Datei gespeichert wird.

Hat hier jemand einen Rat?

16.842 Beiträge seit 2008
vor 9 Jahren

Geht so leider nicht ohne IDE Extensions.
Du kannst leider nicht mal via VS direkt das T4 beim Build ausführen.

Es gibt den T4 Editor als Extension, der vieles automatisiert kann.
Find ihn aber in der Relation zu teuer.

S
417 Beiträge seit 2008
vor 9 Jahren

Hi,

dazu kannst du das kostenlose T4 Toolbox verwenden: T4 Toolbox: Automatic Template Transformation

Dann weist du deiner XML-Datei als Custom-Tool einfach T4ScriptFileGenerator zu und bei jeder Speicherung deiner XML-Datei wird das entsprechende Script getriggert.