Verarbeiten von Textvorlagen mithilfe eines benutzerdefinierten Hosts
Beim Textvorlagen-Transformationsprozess wird aus einer Textvorlagendatei (Eingabe) eine Textdatei (Ausgabe) erzeugt. Sie können das Texttransformationsmodul in einer Visual Studio-Erweiterung oder einer eigenständigen Anwendung aufrufen, die auf einem Computer mit Visual Studio ausgeführt wird. Sie müssen jedoch einen Textvorlagenhost bereitstellen. Diese Klasse verbindet die Vorlage mit der Umgebung. Sie sucht nach Ressourcen wie Assemblys und Includedateien und verarbeitet die Ausgabe und Fehlermeldungen.
Tipp
Wenn Sie ein Paket oder eine Erweiterung schreiben, die in Visual Studio ausgeführt wird, verwenden Sie ggf. den Textvorlagendienst, anstatt einen eigenen Host zu schreiben. Weitere Informationen finden Sie unter Aufrufen von Texttransformation in einer VS-Erweiterung.
Tipp
Von der Verwendung von Textvorlagentransformationen in Serveranwendungen wird abgeraten. Textvorlagentransformationen sollten nur in einem einzelnen Thread verwendet werden. Dies liegt daran, dass das Textvorlagenmodul eine einzelne AppDomain wieder verwendet, um Vorlagen zu übersetzen, zu kompilieren und auszuführen. Der übersetzte Code ist nicht auf Threadsicherheit hin konzipiert. Das Modul ist für die serielle Verarbeitung von Dateien vorgesehen, so wie dies zur Entwurfszeit in einem Visual Studio-Projekt der Fall ist.
Verwenden Sie für Laufzeitanwendungen ggf. vorverarbeitete Textvorlagen (siehe Generieren von Text zur Laufzeit mithilfe von vorverarbeiteten T4-Textvorlagen).
Wenn in der Anwendung zur Kompilierzeit korrigierte Vorlagen verwendet werden, ist es einfacher, vorverarbeitete Textvorlagen zu verwenden. Sie können diesen Ansatz auch verwenden, wenn die Anwendung auf einem Computer ausgeführt wird, auf dem Visual Studio nicht installiert ist. Weitere Informationen finden Sie unter Generieren von Text zur Laufzeit mithilfe von vorverarbeiteten T4-Textvorlagen.
Ausführen einer Textvorlage in der Anwendung
Zum Ausführen einer Textvorlage rufen Sie die ProcessTemplate-Methode von Microsoft.VisualStudio.TextTemplating.Engine auf:
using Microsoft.VisualStudio.TextTemplating;
...
Engine engine = new Engine();
string output = engine.ProcessTemplate(templateString, host);
Die Anwendung muss die Vorlage finden und bereitstellen und die Ausgabe verarbeiten.
Im host-Parameter muss eine Klasse angegeben werden, die ITextTemplatingEngineHost implementiert. Diese Methode wird vom Modul aufgerufen.
Der Host muss in der Lage sein, Fehler zu protokollieren und Verweise auf Assemblys und Includedateien aufzulösen, er muss eine Anwendungsdomäne bereitstellen, in der die Vorlage ausgeführt werden kann, und den entsprechenden Prozessor für jede Direktive aufrufen.
Microsoft.VisualStudio.TextTemplating.Engine ist in Microsoft.VisualStudio.TextTemplating.10.0.dll definiert, und ITextTemplatingEngineHost ist in Microsoft.VisualStudio.TextTemplating.Interfaces.10.0.dll definiert.
In diesem Abschnitt
- Exemplarische Vorgehensweise: Erstellen eines benutzerdefinierten Textvorlagenhosts
Veranschaulicht die Erstellung eines benutzerdefinierten Textvorlagenhosts, der die Textvorlagenfunktion außerhalb von Visual Studio verfügbar macht.
Verweis
Verwandte Abschnitte
Textvorlagen-Transformationsprozess
Beschreibt die Funktionsweise der Texttransformation und die anpassbaren Teile.Erstellen von benutzerdefinierten Direktivenprozessoren für Textvorlagen
Enthält eine Übersicht über Textvorlagen-Direktivenprozessoren.
Änderungsprotokoll
Datum |
Versionsgeschichte |
Grund |
---|---|---|
Oktober 2010 |
Ausführlicher Hinweis zu Threadsicherheit |
Kundenfeedback. |