Wskazówki: debugowanie szablonu tekstowego uzyskującego dostęp do modelu
Artykuł
Podczas modyfikowania lub dodawania szablonów tekstowych w rozwiązaniu języka specyficznego dla domeny mogą wystąpić błędy, gdy aparat przekształca szablon w kod źródłowy lub kompiluje wygenerowany kod. W poniższym przewodniku przedstawiono niektóre czynności, które można wykonać w celu debugowania szablonu tekstowego.
Skompiluj rozwiązanie i uruchom je w debugerze. (Na stronie Menu kompilacji, kliknij polecenie Skompiluj rozwiązanie, a następnie w menu Debugowanie kliknij pozycję Rozpocznij debugowanie. Nowe wystąpienie programu Visual Studio otwiera projekt Debugowanie.
Dodaj plik tekstowy o nazwie DebugTest.tt do projektu Debugowanie.
Upewnij się, że właściwość Niestandardowe narzędzie DebugTest.tt jest ustawiona na TextTemplatingFileGeneratorwartość .
Dyrektywy debugowania, które uzyskują dostęp do modelu z szablonu tekstowego
Aby uzyskać dostęp do modelu z instrukcji i wyrażeń w szablonie tekstowym, należy najpierw wywołać wygenerowany procesor dyrektywy. Wywołanie wygenerowanego procesora dyrektywy sprawia, że klasy w modelu są dostępne dla kodu szablonu tekstowego jako właściwości. Aby uzyskać więcej informacji, zobacz Uzyskiwanie dostępu do modeli z szablonów tekstowych.
W poniższych procedurach debugujesz nieprawidłową nazwę dyrektywy i nieprawidłową nazwę właściwości.
Aby debugować nieprawidłową nazwę dyrektywy
Zastąp kod w DebugTest.tt następującym kodem:
Uwaga
Kod zawiera błąd. Wprowadzasz błąd, aby go debugować.
<#@ template language="VB" inherits="Microsoft.VisualStudio.TextTemplating.VSHost.ModelingTextTransformation"#>
<#@ output extension=".txt" #>
<#@ modelRoot processor="DebuggingTestLanguageDirectiveProcessor" requires="fileName='Sample.ddd'" provides="ExampleModel=ExampleModel" #>
Model: <#= Me.ExampleModel #>
<#
For Each element as ExampleElement in Me.ExampleModel.Elements
#>
Element: <#= element.Name #>
<#
Next
#>
W Eksplorator rozwiązań kliknij prawym przyciskiem myszy DebugTest.tt, a następnie kliknij polecenie Uruchom narzędzie niestandardowe.
W oknie Lista błędów zostanie wyświetlony następujący błąd:
Procesor o nazwie "DebugTestLanguageDirectiveProcessor" nie obsługuje dyrektywy o nazwie "modelRoot". Przekształcenie nie zostanie uruchomione.
W tym przypadku wywołanie dyrektywy zawiera nieprawidłową nazwę dyrektywy. modelRoot Określono jako nazwę dyrektywy, ale poprawna nazwa dyrektywy to DebuggingTestLanguage.
Kliknij dwukrotnie błąd w oknie Lista błędów, aby przejść do kodu.
Aby poprawić kod, zmień nazwę dyrektywy na DebuggingTestLanguage.
<#@ template language="VB" inherits="Microsoft.VisualStudio.TextTemplating.VSHost.ModelingTextTransformation"#>
<#@ output extension=".txt" #>
<#@ DebuggingTestLanguage processor="DebuggingTestLanguageDirectiveProcessor" requires="fileName='Sample.ddd'" provides="ExampleModel=LibraryModel" #>
Model: <#= Me.ExampleModel #>
<#
For Each element as ExampleElement in Me.ExampleModel.Elements
#>
Element: <#= element.Name #>
<#
Next
#>
W Eksplorator rozwiązań kliknij prawym przyciskiem myszy DebugTest.tt, a następnie kliknij polecenie Uruchom narzędzie niestandardowe.
Zostanie wyświetlone okno Lista błędów i zostanie wyświetlone jedno z następujących błędów:
(C#)
Kompilowanie przekształcenia: Identyfikator GUID> microsoft.VisualStudio.TextTemplating<. GeneratedTextTransformation" nie zawiera definicji elementu "ExampleModel"
(Visual Basic)
Kompilowanie przekształcenia: "ExampleModel" nie jest członkiem identyfikatora GUID> "Microsoft.VisualStudio.TextTemplating<". GeneratedTextTransformation".
W takim przypadku kod szablonu tekstowego zawiera nieprawidłową nazwę właściwości. ExampleModel Określono jako nazwę właściwości, ale poprawna nazwa właściwości to LibraryModel. Poprawną nazwę właściwości można znaleźć w parametrze zapewnia, jak pokazano w poniższym kodzie:
Ten moduł ułatwia ocenę umiejętności debugowania. Zaczynasz od aplikacji konsolowej w języku C#, która zawiera problemy z logiką kodu i specyfikację, która opisuje wymagania. Masz wyzwanie, aby zademonstrować możliwość identyfikowania i rozwiązywania problemów przy użyciu narzędzi debugera programu Visual Studio Code.