Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wenn Sie Textvorlagen in einer domänenspezifischen Sprachlösung (DSL) ändern oder hinzufügen, kann es zu Fehlern kommen, wenn die Engine die Vorlage in Quellcode umwandelt oder den generierten Code kompiliert. Die folgende exemplarische Vorgehensweise veranschaulicht einige der Möglichkeiten, die Ihnen beim Debuggen einer Textvorlage zur Verfügung stehen.
Hinweis
Weitere Informationen über Textvorlagen im Allgemeinen finden Sie unter Codegenerierung und T4-Textvorlagen. Weitere Informationen zum Debuggen von Textvorlagen finden Sie unter Exemplarische Vorgehensweise: Debuggen einer Textvorlage.
Erstellen einer DSL-Lösung
In diesem Verfahren erstellen Sie eine domänenspezifische Sprachlösung, die die folgenden Merkmale aufweist:
Name: DebuggingTestLanguage
Projektmappenvorlage: Minimale Sprache
Dateierweiterung: .ddd
Firmenname: Fabrikam
Weitere Informationen zum Erstellen einer DSL-Lösung finden Sie unter Gewusst wie: Erstellen einer domänenspezifischen Sprachlösung.
Erstellen einer Textvorlage
Fügen Sie Ihrer Projektmappe eine Textvorlage hinzu.
So erstellen Sie eine Textvorlage
Erstellen Sie die Projektmappe, und starten Sie die Ausführung im Debugger. (Klicken Sie im Menü Erstellen auf Projektmappe neu erstellen und dann im Menü Debuggen auf Debuggen starten.) Das Debugprojekt wird in einer neuen Instanz von Visual Studio geöffnet.
Fügen Sie dem Debugprojekt eine Textdatei mit dem Namen
DebugTest.tthinzu.Stellen Sie sicher, dass die Eigenschaft Benutzerdefiniertes Tool von „DebugTest.tt“ auf
TextTemplatingFileGeneratorfestgelegt ist.
Debuganweisungen, die auf ein Modell aus einer Textvorlage zugreifen
Bevor Sie über die Anweisungen und Ausdrücke in einer Textvorlage auf ein Modell zugreifen können, müssen Sie zunächst einen generierten Anweisungsprozessor aufrufen. Der Aufruf des generierten Anweisungsprozessors macht die Klassen in Ihrem Modell als Eigenschaften für den Textvorlagencode verfügbar. Weitere Informationen finden Sie unter Zugreifen auf Modelle über Textvorlagen.
In den folgenden Verfahren debuggen Sie einen falschen Anweisungsnamen und einen falschen Eigenschaftennamen.
So debuggen Sie einen falschen Anweisungsnamen
Ersetzen Sie den Code in „DebugTest.tt“ durch den folgenden Code:
Hinweis
Der Code enthält einen Fehler. Sie führen den Fehler ein, um ihn zu debuggen.
<#@ template language="C#" inherits="Microsoft.VisualStudio.TextTemplating.VSHost.ModelingTextTransformation"#> <#@ output extension=".txt" #> <#@ modelRoot processor="DebuggingTestLanguageDirectiveProcessor" requires="fileName='Sample.ddd'" provides="ExampleModel=ExampleModel" #> Model: <#= this.ExampleModel #> <# foreach (ExampleElement element in this.ExampleModel.Elements) { #> Element: <#= element.Name #> <# } #>Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf „DebugTest.tt“ und dann auf Benutzerdefiniertes Tool ausführen.
Im Fenster Fehlerliste wird dieser Fehler angezeigt:
Der Prozessor 'DebuggingTestLanguageDirectiveProcessor' bietet keine Unterstützung für die Anweisung 'modelRoot'. Die Transformation wird nicht ausgeführt.
In diesem Fall enthält der Aufruf der Anweisung einen falschen Anweisungsnamen. Sie haben
modelRootals Anweisungsnamen angegeben, aber der richtige Name der Anweisung lautetDebuggingTestLanguage.Doppelklicken Sie im Fenster Fehlerliste auf den Fehler, um zum Code zu springen.
Um den Code zu korrigieren, ändern Sie den Namen der Anweisung in
DebuggingTestLanguage.Die Änderung ist hervorgehoben.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf „DebugTest.tt“ und dann auf Benutzerdefiniertes Tool ausführen.
Nun wandelt das System die Textvorlage um und generiert die entsprechende Ausgabedatei. Im Fenster Fehlerliste werden keine Fehler angezeigt.
So debuggen Sie einen falschen Eigenschaftennamen
Ersetzen Sie den Code in „DebugTest.tt“ durch den folgenden Code:
Hinweis
Der Code enthält einen Fehler. Sie führen den Fehler ein, um ihn zu debuggen.
<#@ template language="C#" inherits="Microsoft.VisualStudio.TextTemplating.VSHost.ModelingTextTransformation"#> <#@ output extension=".txt" #> <#@ DebuggingTestLanguage processor="DebuggingTestLanguageDirectiveProcessor" requires="fileName='Sample.ddd'" provides="ExampleModel=LibraryModel" #> Model: <#= this.ExampleModel #> <# foreach (ExampleElement element in this.ExampleModel.Elements) { #> Element: <#= element.Name #> <# } #>Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf „DebugTest.tt“ und dann auf Benutzerdefiniertes Tool ausführen.
Das Fenster Fehlerliste wird angezeigt und zeigt einen der folgenden Fehler an:
(C#)
Kompilieren der Transformation: Microsoft.VisualStudio.TextTemplating<GUID>. 'GeneratedTextTransformation' enthält keine Definition für 'ExampleModel'.
(Visual Basic)
Kompilieren der Transformation: 'ExampleModel' ist kein Member von 'Microsoft.VisualStudio.TextTemplating<GUID>.GeneratedTextTransformation'.
In diesem Fall enthält der Textvorlagencode einen falschen Eigenschaftennamen. Sie haben als Eigenschaftenname
ExampleModelangegeben, aber der richtige Eigenschaftenname lautetLibraryModel. Sie finden den richtigen Eigenschaftennamen im Parameter „provides“, wie im folgenden Code gezeigt:<#@ DebuggingTestLanguage processor="DebuggingTestLanguageDirectiveProcessor" requires="fileName='Sample.ddd'" provides="ExampleModel=LibraryModel" #>Doppelklicken Sie im Fenster „Fehlerliste“ auf den Fehler, um zum Code zu springen.
Um den Code zu korrigieren, ändern Sie den Eigenschaftennamen im Code der Textvorlage in
LibraryModel.Die Änderungen werden hervorgehoben.
<#@ template language="C#" inherits="Microsoft.VisualStudio.TextTemplating.VSHost.ModelingTextTransformation"#> <#@ output extension=".txt" #> <#@ DebuggingTestLanguage processor="DebuggingTestLanguageDirectiveProcessor" requires="fileName='Sample.ddd'" provides="ExampleModel=LibraryModel" #> Model: <#= this.LibraryModel #> <# foreach (ExampleElement element in this.LibraryModel.Elements) { #> Element: <#= element.Name #> <# } #>Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf „DebugTest.tt“ und dann auf Benutzerdefiniertes Tool ausführen.
Nun wandelt das System die Textvorlage um und generiert die entsprechende Ausgabedatei. Im Fenster Fehlerliste werden keine Fehler angezeigt.