Wie fügt man einer T4-Vorlage eine Abhängigkeit zu einer beliebigen Datei hinzu?

8

Ich habe eine T4-Vorlage, die Klassen aus einer XML-Datei generiert.

Wie kann ich eine Abhängigkeit zwischen der xml-Datei und der Vorlagendatei hinzufügen, so dass die Schablone bei der Änderung der xml-Datei automatisch erneut ausgeführt wird, ohne im Kontextmenü "Eigenes Werkzeug ausführen" auszuwählen?

    
Pop Catalin 11.11.2008, 12:22
quelle

4 Antworten

4

Ich glaube nicht, dass T4 die automatische Template-Transformation basierend auf einer externen Abhängigkeit unterstützt. Ich stimme Marc zu - wenn Sie nur eine externe Datei haben, können Sie ein benutzerdefiniertes "benutzerdefiniertes Tool" für Ihre XML-Datei erstellen oder einfach ttxgen verwenden . Ich glaube jedoch nicht, dass dieser Ansatz auf ein Szenario skaliert, in dem die t4-Vorlage von mehr als einer Datei abhängt. Möglicherweise müssen Sie ein Visual Studio-Paket erstellen, um damit umzugehen.

    
Oleg Sych 29.12.2008, 19:28
quelle
3

Wie lange dauert das Ausführen des Tools? Eine faule Option könnte darin bestehen, den csproj so zu bearbeiten, dass immer das Tool während des Builds ausführt (vermutlich über <Exec ... /> oder eine benutzerdefinierte targets -Datei - das hängt natürlich davon ab, dass es schnell ausgeführt wird.

Ein anderer Weg wäre, ein Shim zu schreiben, das als "Custom Tool" in VS funktioniert und einfach die existierende exe (oder was auch immer) mit den richtigen Args aufruft. Nicht trivial, aber machbar ( siehe hier ) - ich glaube das soll dann angeblich ziemlich gut spielen mit Änderungserkennung. Es steht eigentlich auf meiner Liste der Dinge, die ich für ein aktuelles Projekt tun kann, also werde ich es bald herausfinden ...

    
Marc Gravell 11.11.2008 13:09
quelle
1

Sie können AutoTT Visual Studio Extension verwenden.

Diese Erweiterung ermöglicht die Konfiguration von Triggern, die eine T4-Vorlage ausführen.

Einer der möglichen Auslöser ist ein Dateiwechsel. In der Beispielkonfigurationsdatei auf der AutoTT-Seite stimmt der reguläre Ausdruck für die Auslöser mit allen Dateien in den angegebenen Ordnern überein (Controller, Inhalt), Sie können ihn jedoch so ändern, dass er nur mit einer bestimmten Datei ausgeführt wird.

Chirpy ist eine weitere Option dafür. Und auch T4 Regenerator , was es auf eine andere Weise macht.

    
JotaBe 05.06.2013 12:19
quelle
0

Haben Sie versucht, & lt; # @ xsd zu verwenden?

    
Craig Stuntz 11.11.2008 15:38
quelle

Tags und Links