Návod: Ladění textové šablony přistupující k modelu
Když upravíte nebo přidáte textové šablony v řešení jazyka specifické pro doménu, může dojít k chybám při transformaci šablony na zdrojový kód nebo při kompilaci vygenerovaného kódu. Následující názorný postup ukazuje některé z věcí, které můžete udělat při ladění textové šablony.
Poznámka:
Další informace o textovýchšablonch Další informace o ladění textových šablon naleznete v tématu Návod: Ladění textové šablony.
Vytvoření jazykového řešení specifického pro doménu
V tomto postupu vytvoříte řešení jazyka specifického pro doménu, které má následující charakteristiky:
Název: DebuggingTestLanguage
Šablona řešení: Minimální jazyk
Přípona souboru: .ddd
Název společnosti: Fabrikam
Další informace o vytvoření jazykového řešení specifického pro doménu najdete v tématu Postupy: Vytvoření jazykového řešení specifického pro doménu.
Vytvoření textové šablony
Přidejte do svého řešení textovou šablonu.
Vytvoření textové šablony
Sestavte řešení a začněte ho spouštět v ladicím programu. (Na kartě Nabídka Sestavení , klepněte na tlačítko Znovu sestavit řešení a potom v nabídce Ladění klepněte na tlačítko Spustit ladění.) Nová instance sady Visual Studio otevře projekt ladění.
Přidejte textový soubor s názvem
DebugTest.tt
do projektu ladění.Ujistěte se, že vlastnost Vlastní nástroj DebugTest.tt je nastavena na
TextTemplatingFileGenerator
hodnotu .
Direktivy ladění, které přistupuje k modelu z textové šablony
Než budete mít přístup k modelu z příkazů a výrazů v textové šabloně, musíte nejprve volat vygenerovaný procesor direktiv. Volání vygenerovaného procesoru direktiv zpřístupňuje třídy v modelu kódu textové šablony jako vlastnosti. Další informace najdete v tématu Přístup k modelům z textových šablon.
V následujících postupech budete ladit nesprávný název direktivy a nesprávný název vlastnosti.
Ladění nesprávného názvu direktivy
Nahraďte kód v DebugTest.tt následujícím kódem:
Poznámka:
Kód obsahuje chybu. Zavádíte chybu, abyste ji mohli ladit.
<#@ 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 #> <# } #>
V Průzkumník řešení klepněte pravým tlačítkem na DebugTest.tt a potom klepněte na příkaz Spustit vlastní nástroj.
V okně Seznam chyb se zobrazí tato chyba:
Procesor s názvem DebuggingTestLanguageDirectiveProcessor nepodporuje direktivu s názvem modelRoot. Transformace se nespustí.
V tomto případě volání direktivy obsahuje nesprávný název direktivy. Zadali
modelRoot
jste název direktivy, ale správný název direktivy jeDebuggingTestLanguage
.Poklikejte na chybu v okně Seznam chyb a přejděte na kód.
Chcete-li opravit kód, změňte název direktivy na
DebuggingTestLanguage
.Změna je zvýrazněná.
V Průzkumník řešení klepněte pravým tlačítkem na DebugTest.tt a potom klepněte na příkaz Spustit vlastní nástroj.
Systém teď transformuje textovou šablonu a vygeneruje odpovídající výstupní soubor. V okně Seznam chyb se nezobrazí žádné chyby.
Ladění nesprávného názvu vlastnosti
Nahraďte kód v DebugTest.tt následujícím kódem:
Poznámka:
Kód obsahuje chybu. Zavádíte chybu, abyste ji mohli ladit.
<#@ 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 #> <# } #>
V Průzkumník řešení klepněte pravým tlačítkem na DebugTest.tt a potom klepněte na příkaz Spustit vlastní nástroj.
Zobrazí se okno Se seznamem chyb a zobrazí se jedna z těchto chyb:
(C#)
Kompilace transformace: Microsoft.VisualStudio.TextTemplating<GUID>. GeneratedTextTransformation neobsahuje definici ExampleModel.
(Visual Basic)
Kompilace transformace: ExampleModel není členem guid> Microsoft.VisualStudio.TextTemplating<. GeneratedTextTransformation'
V tomto případě obsahuje kód textové šablony nesprávný název vlastnosti. Zadali
ExampleModel
jste jako název vlastnosti, ale správný název vlastnosti jeLibraryModel
. Správný název vlastnosti najdete v parametru, jak je znázorněno v následujícím kódu:<#@ DebuggingTestLanguage processor="DebuggingTestLanguageDirectiveProcessor" requires="fileName='Sample.ddd'" provides="ExampleModel=LibraryModel" #>
Poklikejte na chybu v okně Seznam chyb a přejděte na kód.
Chcete-li kód opravit, změňte název vlastnosti na
LibraryModel
v kódu textové šablony.Změny jsou zvýrazněné.
<#@ 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 #> <# } #>
V Průzkumník řešení klepněte pravým tlačítkem na DebugTest.tt a potom klepněte na příkaz Spustit vlastní nástroj.
Systém teď transformuje textovou šablonu a vygeneruje odpovídající výstupní soubor. V okně Seznam chyb se nezobrazí žádné chyby.