Udostępnij za pośrednictwem


Wskazówki: debugowanie szablonu tekstowego uzyskującego dostęp do modelu

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.

Uwaga

Aby uzyskać więcej informacji na temat szablonów tekstowych w ogóle, zobacz Generowanie kodu i szablony tekstowe T4. Aby uzyskać więcej informacji na temat debugowania szablonów tekstu, zobacz Przewodnik: debugowanie szablonu tekstowego.

Tworzenie rozwiązania języka specyficznego dla domeny

W tej procedurze utworzysz rozwiązanie języka specyficznego dla domeny, które ma następujące cechy:

Tworzenie szablonu tekstowego

Dodaj szablon tekstowy do rozwiązania.

Aby utworzyć szablon tekstowy

  1. 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.

  2. Dodaj plik tekstowy o nazwie DebugTest.tt do projektu Debugowanie.

  3. 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

  1. Zastąp kod w DebugTest.tt następującym kodem:

    Uwaga

    Kod zawiera błąd. Wprowadzasz błąd, aby go debugować.

    <#@ 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 #>
    <#
    }
    #>
    
  2. 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.

  3. Kliknij dwukrotnie błąd w oknie Lista błędów, aby przejść do kodu.

  4. Aby poprawić kod, zmień nazwę dyrektywy na DebuggingTestLanguage.

    Zmiana jest wyróżniona.

    <#@ DebuggingTestLanguage processor="DebuggingTestLanguageDirectiveProcessor" requires="fileName='Sample.ddd'" provides="ExampleModel=ExampleModel" #>
    
  5. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy DebugTest.tt, a następnie kliknij polecenie Uruchom narzędzie niestandardowe.

    Teraz system przekształca szablon tekstowy i generuje odpowiedni plik wyjściowy. W oknie Lista błędów nie będą widoczne żadne błędy.

Aby debugować nieprawidłową nazwę właściwości

  1. Zastąp kod w DebugTest.tt następującym kodem:

    Uwaga

    Kod zawiera błąd. Wprowadzasz błąd, aby go debugować.

    <#@ 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 #>
    <#
    }
    #>
    
  2. 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:

    <#@ DebuggingTestLanguage processor="DebuggingTestLanguageDirectiveProcessor" requires="fileName='Sample.ddd'" provides="ExampleModel=LibraryModel" #>
    
  3. Kliknij dwukrotnie błąd w oknie Lista błędów, aby przejść do kodu.

  4. Aby poprawić kod, zmień nazwę właściwości na LibraryModel w kodzie szablonu tekstowego.

    Zmiany są wyróżnione.

    <#@ 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 #>
    <#
    }
    #>
    
  5. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy DebugTest.tt, a następnie kliknij polecenie Uruchom narzędzie niestandardowe.

    Teraz system przekształca szablon tekstowy i generuje odpowiedni plik wyjściowy. W oknie Lista błędów nie będą widoczne żadne błędy.