Es wird empfohlen, Visual Studio 2017 zu verwenden

Code Generation and T4 Text Templates

 

Veröffentlicht: Februar 2016

Die neueste Dokumentation zu Visual Studio 2017 finden Sie unter Dokumentation zu Visual Studio 2017.

In Visual Studio besteht eine T4-Textvorlage aus einer Mischung von Textblöcken und steuernder Logik, über die eine Textdatei generiert werden kann. Die steuernde Logik wird als Programmcodefragmente in Visual C# oder Visual Basic geschrieben. In Visual Studio 2015 Update 2 und höher können Sie Funktionen von C# Version 6.0 in T4-template-Direktiven verwenden. Die generierte Datei kann Text beliebiger Art enthalten, z. B. eine Webseite, eine Ressourcendatei oder Programmquellcode in einer beliebigen Sprache.

Es gibt zwei Arten von T4-Textvorlagen:

T4-Laufzeit-Textvorlagen („vorverarbeitete“ Vorlagen) werden in Ihrer Anwendung ausgeführt, um Textzeichenfolgen zu erstellen (meist als Teil der Ausgabe der Anwendung).
Sie könnten beispielsweise eine Vorlage erstellen, um eine HTML-Seite zu definieren:

<html><body>  
 The date and time now is: <#= DateTime.Now #>  
</body></html>  

Sie sehen, dass die Vorlage der generierten Ausgabe ähnelt. Die Ähnlichkeit der Vorlage mit der resultierenden Ausgabe hilft Ihnen dabei, Fehler zu vermeiden, wenn Sie die Vorlage ändern möchten.

Außerdem enthält die Vorlage Programmcodefragmente. Sie können diese Fragmente verwenden, um Abschnitte des Texts zu wiederholen, bedingte Abschnitte zu erstellen und Daten aus Ihrer Anwendung anzuzeigen.

Um die Ausgabe zu generieren, ruft die Anwendung eine Funktion auf, die über die Vorlage generiert wurde. Zum Beispiel:

string webResponseText = new MyTemplate().TransformText();  
  

Ihre Anwendung kann auf einem Computer ausgeführt werden, auf dem Visual Studio nicht installiert ist.

Um eine Laufzeitvorlage zu erstellen, fügen Sie Ihrem Projekt eine Vorverarbeitete Textvorlage-Datei hinzu. Alternativ können Sie eine Nur-Text-Datei hinzufügen und deren Eigenschaft Benutzerdefiniertes Tool auf TextTemplatingFilePreprocessor festlegen.

Weitere Informationen finden Sie unter Run-Time Text Generation with T4 Text Templates. Weitere Informationen zur Syntax von Vorlagen finden Sie unter Writing a T4 Text Template.

T4-Entwurfszeit-Textvorlagen werden in Visual Studio ausgeführt, um einen Teil des Quellcodes sowie andere Ressourcen Ihrer Anwendung zu definieren.
Üblicherweise verwenden Sie mehrere Vorlagen, über die die Daten aus einer einzelnen Eingabedatei oder Datenbank gelesen und einige Ihrer .cs-, .vb- oder sonstigen Quelldateien generiert werden. Aus jeder Vorlage wird eine Datei generiert. Jede dieser Dateien wird in Visual Studio oder MSBuild ausgeführt.

Ihre Eingabedaten könnten beispielsweise Konfigurationsdaten in einer XML-Datei sein. Immer dann, wenn Sie die XML-Datei während der Entwicklung bearbeitet haben, würden mit den Textvorlagen Teile des Anwendungscodes neu generiert. Eine der Vorlagen könnte so wie im folgenden Beispiel aussehen:

<#@ 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 würde die generierte .cs-Datei in etwa wie folgt aussehen:

namespace Fabrikam.FirstJob  
{  
  ... // More code here.   
}  

Ein weiteres Beispiel: Die Eingabe könnte ein Diagramm des Workflows in einer Geschäftsaktivität sein. Wenn die Benutzer ihren Geschäftsworkflow ändern oder wenn Sie beginnen, mit neuen Benutzern zu arbeiten, die einen anderen Workflow haben, kann der Code problemlos neu generiert werden, damit er dem neuen Modell entspricht.

Entwurfszeitvorlagen ermöglichen es, die Konfiguration schneller und zuverlässiger zu ändern, wenn sich die Anforderungen geändert haben. In der Regel ist die Eingabe hinsichtlich Geschäftsanforderungen definiert (wie im Workflowbeispiel). Dies erleichtert die Erörterung von Änderungen mit den Benutzern. Entwurfszeitvorlagen sind daher ein nützliches Tool in dynamischen Entwicklungsprozessen.

Um eine Entwurfszeitvorlage zu erstellen, fügen Sie Ihrem Projekt eine Textvorlage-Datei hinzu. Alternativ können Sie eine Nur-Text-Datei hinzufügen und deren Eigenschaft Benutzerdefiniertes Tool auf TextTemplatingFileGenerator festlegen.

Weitere Informationen finden Sie unter Design-Time Code Generation by using T4 Text Templates. Weitere Informationen zur Syntax von Vorlagen finden Sie unter Writing a T4 Text Template.

System_CAPS_ICON_note.jpg Hinweis

Der Begriff Modell wird manchmal verwendet, um Daten zu beschreiben, die von mindestens einer Vorlage gelesen werden. Das Modell kann in einem beliebigen Format in einer beliebigen Art von Datei oder Datenbank vorliegen. Es muss weder ein UML-Modell noch ein domänenspezifisches Sprachmodell sein. Der Begriff „Modell“ gibt lediglich an, dass die Daten hinsichtlich der Geschäftskonzepte definiert werden können, statt so auszusehen wie Code.

Die Transformationsfunktion für Textvorlagen wird als T4 bezeichnet.

Run-Time Text Generation with T4 Text Templates
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.

Design-Time Code Generation by using T4 Text Templates
Die Generierung von Code und anderen Ressourcen aus einem Modell ermöglicht es Ihnen, Ihre Anwendung durch Aktualisieren des Modells zu aktualisieren.

Code Generation in a Build Process
Wenn Sie Visual Studio Visualization and Modeling SDK installiert haben, können Sie sicherstellen, dass die generierte Software stets aktuell bleibt, wenn das Modell geändert wird.

Writing a T4 Text Template
Die Syntax einer Textvorlagendatei.

Exemplarische Vorgehensweise: Generieren von Code mithilfe von Textvorlagen
Veranschaulicht eine Möglichkeit, wie Codegenerierung verwendet werden kann.

Debugging a T4 Text Template
Veranschaulicht das Debuggen von Textvorlagen und einigen üblichen Textvorlagenfehlern.

Generating Files with the TextTransform Utility
Das Befehlszeilentool, mit dem Sie Textvorlagentransformationen ausführen können.

Customizing T4 Text Transformation
Veranschaulicht die Vorgehensweise zum Schreiben von Direktivenprozessoren und benutzerdefinierten Vorlagenhosts für Ihre eigenen Datenquellen.

Generate files from a UML model
Generieren von Code für eine domänenspezifische Sprache

Anzeigen: