2010-03-23 16 views
14

Sto cercando di eseguire il debug l'esecuzione di un template T4 in Visual Studio 2008.Impostare un punto di interruzione in un modello T4

Tutte le informazioni che mi sto trovando debugging modelli T4 in Visual Studio 2008 dicono che è possibile impostare un punto di interruzione (punto rosso) nel modello come se fosse un normale file di codice. Ho installato l'evidenziatore del codice Clarius T4, quindi il mio modello T4 è colorato, ma Non riesco a impostare un punto di interruzione. Quando faccio clic sul margine non succede nulla.

Ho provato Debugger.Break() e avvia una nuova istanza di VS.NET, ma non può caricare il codice dal mio modello. Ricevo una finestra di dialogo che dice "Non c'è codice sorgente disponibile per la posizione corrente". Questo succede se ho lo stesso progetto caricato nell'altra istanza di se faccio girare una nuova istanza.

Cosa dà?

+1

Wow, Skynet è ora fino al modello T4? – DVK

+0

Ho lo stesso comportamento con VS2008; Non riesco a impostare un punto di interruzione nel file .tt.(Ho anche installato l'evidenziatore Clarius, ma non penserei che sia collegato al problema del punto di interruzione). Tuttavia, posso impostare i breakpoint in VS2010 nel file .tt. Non ti è utile, ma forse di interesse per qualcuno. –

+0

@ Mark: Grazie, è bello saperlo! –

risposta

8

OK- capito. L'avvio di una nuova istanza non è un'opzione, indipendentemente da ciò che dice Oleg's article. (Non diss al signor Sych, il suo blog è Vangelo per la generazione di codice T4!)

  1. avviare una seconda istanza di Visual Studio,
  2. Aprire un file (qualsiasi file) in modo che il menu debug si presenta.
  3. Selezionare "Connetti a processo ..." e selezionare l'altra istanza VS.NET
  4. Salvare il modello nel caso in allegato di VS.NET (oppure fare clic destro e selezionare Esegui strumento personalizzato)

Voila.

+0

È anche possibile allegare al processo dal menu "Strumenti". –

+0

Questo sembra funzionare in parte per me. Sto ancora vedendo il "Nessun codice sorgente disponibile" nell'istanza di debug di VS. Come ottengo il codice sorgente? –

4

Assicurarsi che si attiva l'opzione di debug nella direttiva modello:

< # @ template language = "C#" debug = "true" #>

Questo rende T4 salvare il codice sorgente e file di simboli necessari per il debug in Visual Studio.

+0

L'uomo stesso! Grazie - a quanto pare il punto di interruzione del punto rosso non funziona in VS2008 ma il collegamento funziona alla grande. –

23

Impostare il seguente:

<#@ template debug="true" hostSpecific="true" #> 
<#@ import namespace="System.Diagnostics" #> 

Poi nel modello

Debugger.Launch(); 

VS prenderà il via il debugger JIT in una nuova istanza di VS 2010

+0

Perfetto funzionato ... lancia il secondo VS per il debugging; passa attraverso il modello e in qualsiasi codice di debug che hai caricato in assembly. Bello! –

10

In Visual Studio 2013:

  1. Impostare un punto di interruzione i n il file .tt
  2. pulsante destro del mouse sul file .tt nella soluzione Explorer
  3. Selezionare "Debug T4 Modello"
  4. Fatto!

Non è necessario associare una seconda istanza di Visual Studio.

Problemi correlati