Codegenerierung und T4-Textvorlagen
In Visual Studio ist eine T4-Textvorlage eine Datei, die eine Mischung von Textblöcken und Steuerelementlogik enthält und zum Generieren einer Textdatei verwendet werden kann.Die Steuerelementlogik wird in Form von Fragmenten des Programmcodes in Visual C# oder Visual Basic geschrieben. Die generierte Datei kann Text einer beliebigen Art sein, z. B. eine Webseite, eine Ressourcendatei oder Programmquellcode in einer beliebigen Sprache.
Es existieren zwei Arten von T4-Textvorlagen:
T4-Laufzeittextvorlagen ("vorverarbeitete" Vorlagen) werden in der Anwendung ausgeführt, um Textzeichenfolgen zu erstellen, normalerweise als Teil der Ausgabe.
Sie können beispielsweise eine Vorlage erstellen, um eine HTML-Seite zu definieren:<html><body> The date and time now is: <#= DateTime.Now #> </body></html>
Die Vorlage ähnelt der generierten Ausgabe.Die Ähnlichkeit der Vorlage mit der resultierenden Ausgabe hilft Ihnen dabei, Fehler zu vermeiden, wenn eine Änderung vorgenommen werden soll.
Außerdem enthält die Vorlage Fragmente des Programmcodes.Sie können diese Fragmente verwenden, um Abschnitte des Texts zu wiederholen, bedingte Abschnitte zu erstellen und Daten aus der Anwendung anzuzeigen.
Um die Ausgabe zu generieren, ruft die Anwendung eine Funktion auf, die von der Vorlage generiert wird.Beispiele:
string webResponseText = new MyTemplate().TransformText();
Die Anwendung kann auf einem Computer ausgeführt werden, auf dem nicht Visual Studio installiert ist.
Um eine Laufzeitvorlage zu erstellen, fügen Sie dem Projekt eine Datei vom Typ Vorverarbeitete Textvorlage hinzu.Sie können auch eine Nur-Text-Datei hinzufügen und die Eigenschaft Benutzerdefiniertes Tool auf TextTemplatingFilePreprocessor festlegen.
Weitere Informationen finden Sie unter Laufzeittextgenerierung mithilfe von T4-Textvorlagen.Weitere Informationen zur Syntax von Vorlagen finden Sie unter Schreiben einer T4-Textvorlage.
T4-Entwurfszeittextvorlagen werden in Visual Studio ausgeführt, um einen Teil des Quellcodes und andere Ressourcen der Anwendung zu definieren.
In der Regel würden mehrere Vorlagen verwendet werden, die die Daten in einer einzelnen Eingabedatei oder Datenbank lesen und einen Teil der .cs-, .vb- oder anderer Quelldateien generieren.Jede Vorlage generiert eine Datei.Sie werden in Visual Studio oder MSBuild ausgeführt.Bei den Eingabedaten kann es sich z. B. um eine XML-Datei der Konfigurationsdaten handeln.Bei jeder Bearbeitung der XML-Datei während der Entwicklung würden die Textvorlagen einen Teil des Anwendungscodes erneut generieren.Eine der Vorlagen könnte dem folgenden Beispiel entsprechen:
<#@ output extension=".txt" #> <#@ assembly name="System.Xml" #> <# System.Xml.XmlDocument configurationData = ...; // Read a data file here. #> namespace Fabrikam.<#= configurationData.SelectSingleNode("jobName").Value #> { ... // More code here. }
Abhängig von den Werten in der XML-Datei sähe die generierte .cs-Datei etwa folgendermaßen aus:
namespace Fabrikam.FirstJob { ... // More code here. }
Anderes Beispiel: Die Eingabe kann ein Diagramm des Workflows in einer Geschäftsaktivität sein.Wenn die Benutzer ihren Geschäftsworkflow ändern oder wenn Sie mit neuen Benutzern arbeiten, die einen anderen Workflow verwenden, kann der Code problemlos neu generiert werden, damit er dem neuen Modell entspricht.
Entwurfszeitvorlagen sorgen für schnellere und zuverlässigere Konfigurationsänderungen, wenn sich die Anforderungen ändern.In der Regel wird die Eingabe hinsichtlich Geschäftsanforderungen definiert (siehe Workflowbeispiel).Dies erleichtert die Erörterung von Änderungen mit den Benutzern.Entwurfszeitvorlagen sind daher in agilen Entwicklungsprozessen ein nützliches Tool.
Um eine Entwurfszeitvorlage zu erstellen, fügen Sie dem Projekt eine Datei vom Typ Textvorlage hinzu.Sie können auch eine Nur-Text-Datei hinzufügen und die Eigenschaft Benutzerdefiniertes Tool auf TextTemplatingFileGenerator festlegen.
Weitere Informationen finden Sie unter Generieren von Code zur Entwurfszeit mithilfe von T4-Textvorlagen.Weitere Informationen zur Syntax von Vorlagen finden Sie unter Schreiben einer T4-Textvorlage.
Hinweis |
---|
Das Begriffsmodell dient gelegentlich zur Beschreibung von Daten, die von mindestens einer Vorlage gelesen werden.Das Modell kann ein beliebiges Format aufweisen und in jeder Art von Datei oder Datenbank enthalten sein.Es muss kein UML-Modell oder ein domänenspezifisches Sprachmodell sein. 'Der Begriff "Modell" bedeutet lediglich, dass die Daten hinsichtlich der Geschäftskonzepte definiert werden können. Es bedeutet nicht, dass Ähnlichkeit mit dem Code besteht. |
Die Funktion für Textvorlagentransformation wird T4 genannt.
In diesem Abschnitt
Laufzeittextgenerierung mithilfe von T4-Textvorlagen
In jeder Anwendung, die Textdateien generiert, sind vorkompilierte Textvorlagen eine einfache und zuverlässige Methode, den Text zu definieren.Diese Methode kann jedoch nicht für Textvorlagen verwendet werden, die sich zur Laufzeit ändern.Generieren von Code zur Entwurfszeit mithilfe von T4-Textvorlagen
Die Generierung von Code und anderen Ressourcen mit einem Modell ermöglicht die Aktualisierung der Anwendung durch Aktualisieren des Modells.Codegenerierung in einem Buildprozess
Wenn Sie das Visualisierungs- und Modellierungs-SDK von Visual Studio installiert haben, können Sie sicherstellen, dass die generierte Software stets auf dem neuesten Stand ist, wenn das Modell geändert wird.Schreiben einer T4-Textvorlage
Die Syntax einer Textvorlagendatei.Exemplarische Vorgehensweise: Generieren von Code mithilfe von Textvorlagen
Veranschaulicht eine Möglichkeit, die Codegenerierung zu verwenden.Debuggen einer T4-Textvorlage
Veranschaulicht das Debuggen von Textvorlagen und listet einige häufige Textvorlagenfehler auf.Generieren von Dateien mit dem Hilfsprogramm "TextTransform"
Das Befehlszeilentool, mit dem Sie Textvorlagentransformationen ausführen können.Anpassen der T4-Texttransformation
Veranschaulicht die Vorgehensweise zum Schreiben von Direktivenprozessoren und benutzerdefinierten Vorlagenhosts für eigene Datenquellen.
Siehe auch
Konzepte
Gewusst wie: Generieren von Dateien aus einem UML-Modell