Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Quando si modificano o si aggiungono modelli di testo in una soluzione di linguaggio specifica del dominio, è possibile che si verifichino errori quando il motore trasforma il modello in codice sorgente o quando compila il codice generato. La procedura dettagliata seguente illustra alcune delle operazioni che è possibile eseguire per eseguire il debug di un modello di testo.
Nota
Per altre informazioni sui modelli di testo in generale, vedere Generazione di codice e modelli di testo T4. Per altre informazioni sul debug dei modelli di testo, vedere Procedura dettagliata: Debug di un modello di testo.
Creazione di una soluzione di linguaggio specifica del dominio
In questa procedura viene creata una soluzione di linguaggio specifica del dominio con le caratteristiche seguenti:
Nome: DebuggingTestLanguage
Modello di soluzione: linguaggio minimo
Estensione del file: .ddd
Nome società: Fabrikam
Per altre informazioni sulla creazione di una soluzione di linguaggio specifica del dominio, vedere Procedura: Creare una soluzione di linguaggio specifica del dominio.
Creazione di un modello di testo
Aggiungere un modello di testo alla soluzione.
Per creare un modello di testo
Compilare la soluzione e avviare l'esecuzione nel debugger. (In Menu Compila, fare clic su Ricompila soluzione, quindi scegliere Avvia debug dal menu Debug. Una nuova istanza di Visual Studio apre il progetto debug.
Aggiungere un file di testo denominato
DebugTest.ttal progetto debug.Assicurarsi che la proprietà Custom Tool di DebugTest.tt sia impostata su
TextTemplatingFileGenerator.
Direttive di debug che accedono a un modello di testo
Prima di poter accedere a un modello dalle istruzioni e dalle espressioni in un modello di testo, è necessario chiamare un processore di direttiva generato. La chiamata del processore di direttiva generata rende le classi nel modello disponibili per il codice del modello di testo come proprietà. Per altre informazioni, vedere Accesso ai modelli da modelli di testo.
Nelle procedure seguenti si eseguirà il debug di un nome di direttiva non corretto e di un nome di proprietà non corretto.
Per eseguire il debug di un nome di direttiva non corretto
Sostituire il codice in DebugTest.tt con il codice seguente:
Nota
Il codice contiene un errore. Si sta introducendo l'errore per eseguirne il debug.
<#@ 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 #> <# } #>In Esplora soluzioni fare clic con il pulsante destro del mouse su DebugTest.tt e quindi scegliere Esegui strumento personalizzato.
Nella finestra Elenco errori viene visualizzato questo errore:
Il processore denominato "DebuggingTestLanguageDirectiveProcessor" non supporta la direttiva denominata "modelRoot". La trasformazione non verrà eseguita.
In questo caso, la chiamata di direttiva contiene un nome di direttiva non corretto. È stato specificato
modelRootcome nome della direttiva, ma il nome della direttiva corretto èDebuggingTestLanguage.Fare doppio clic sull'errore nella finestra Elenco errori per passare al codice.
Per correggere il codice, modificare il nome della direttiva in
DebuggingTestLanguage.La modifica è evidenziata.
In Esplora soluzioni fare clic con il pulsante destro del mouse su DebugTest.tt e quindi scegliere Esegui strumento personalizzato.
Il sistema trasforma ora il modello di testo e genera il file di output corrispondente. Nella finestra Elenco errori non verranno visualizzati errori.
Per eseguire il debug di un nome di proprietà non corretto
Sostituire il codice in DebugTest.tt con il codice seguente:
Nota
Il codice contiene un errore. Si sta introducendo l'errore per eseguirne il debug.
<#@ 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 #> <# } #>In Esplora soluzioni fare clic con il pulsante destro del mouse su DebugTest.tt e quindi scegliere Esegui strumento personalizzato.
Viene visualizzata la finestra Elenco errori e viene visualizzato uno di questi errori:
(C#)
Trasformazione compilazione: Microsoft.VisualStudio.TextTemplating<GUID>. GeneratedTextTransformation' non contiene una definizione per 'ExampleModel'
(Visual Basic)
Trasformazione compilazione: 'ExampleModel' non è un membro del GUID> 'Microsoft.VisualStudio.TextTemplating<. GeneratedTextTransformation'.
In questo caso, il codice del modello di testo contiene un nome di proprietà non corretto. È stato specificato
ExampleModelcome nome della proprietà, ma il nome della proprietà corretto èLibraryModel. È possibile trovare il nome corretto della proprietà nel parametro fornisce , come illustrato nel codice seguente:<#@ DebuggingTestLanguage processor="DebuggingTestLanguageDirectiveProcessor" requires="fileName='Sample.ddd'" provides="ExampleModel=LibraryModel" #>Fare doppio clic sull'errore nella finestra Elenco errori per passare al codice.
Per correggere il codice, modificare il nome
LibraryModeldella proprietà in nel codice del modello di testo.Le modifiche sono evidenziate.
<#@ 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 #> <# } #>In Esplora soluzioni fare clic con il pulsante destro del mouse su DebugTest.tt e quindi scegliere Esegui strumento personalizzato.
Il sistema trasforma ora il modello di testo e genera il file di output corrispondente. Nella finestra Elenco errori non verranno visualizzati errori.