8 Stimmen

Wie kann man einer T4-Vorlage eine Abhängigkeit von einer beliebigen Datei hinzufügen?

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 bei einer Änderung der xml-Datei die Vorlage automatisch erneut ausgeführt wird, ohne dass die Option "Benutzerdefiniertes Tool ausführen" aus dem Kontextmenü gewählt werden muss?

4voto

Oleg Sych Punkte 598

Ich glaube nicht, dass T4 die automatische Umwandlung von Vorlagen auf der Grundlage einer externen Abhängigkeit unterstützt. Ich stimme Marc zu - wenn Sie nur eine externe Datei haben, können Sie ein benutzerdefiniertes Werkzeug" für Ihre XML-Datei erstellen oder einfach ttxgen . Ich glaube jedoch nicht, dass sich dieser Ansatz auf ein Szenario übertragen lässt, in dem die t4-Vorlage von mehr als einer Datei abhängt. Möglicherweise müssen Sie ein Visual Studio-Paket erstellen, um dies zu handhaben.

0 Stimmen

Gibt es eine Möglichkeit, ttxgen von VS2010 zu verwenden?

3voto

Marc Gravell Punkte 970173

Wie lange dauert es, bis das Tool ausgeführt wird? Eine faule Option wäre, das csproj einfach so zu bearbeiten, dass es immer führt das Tool während der Erstellung aus (vermutlich über <Exec ... /> oder eine benutzerdefinierte targets Datei) - dies hängt natürlich davon ab, dass sie schnell ausgeführt werden kann.

Eine andere Möglichkeit wäre, ein Shim zu schreiben, das als "Custom Tool" in VS funktioniert und einfach die vorhandene Exe (oder was auch immer) mit den richtigen Args aufruft. Nicht trivial, aber machbar ( siehe hier ) - ich glaube, dass dies dann ziemlich gut mit der Änderungserkennung zusammenspielt. Es ist eigentlich auf meiner Liste der Dinge für ein aktuelles Projekt zu tun, so werde ich bald genug herausfinden...

1voto

JotaBe Punkte 36281

Sie können verwenden AutoTT Visual Studio-Erweiterung.

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

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

Chirpy ist eine weitere Möglichkeit, dies zu tun. Und auch T4 Regenerator der dies auf eine andere Art und Weise tut.

-2voto

Craig Stuntz Punkte 124703

Haben Sie versucht, mit <#@ xsd ?

0 Stimmen

Der Link ist tot. Gibt es eine andere Dokumentation zu dieser Richtlinie?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X