2010-03-23 22 views
14

Estoy intentando depurar la ejecución de una plantilla de T4 en Visual Studio 2008.Establecer un punto de interrupción en una plantilla T4

Toda la información que estoy encontrando en la depuración de las plantillas T4 en Visual Studio 2008 dicen que puede establecer un punto de interrupción (punto rojo) en la plantilla como si fuera un archivo de código normal. Tengo el rotulador de código Clarius T4 instalado, por lo que mi plantilla T4 es de color, pero No puedo establecer un punto de interrupción. Cuando hago clic en el margen, no pasa nada.

Probé Debugger.Break(), y lanza una nueva instancia de VS.NET, pero no puede cargar el código de mi plantilla. Aparece un cuadro de diálogo que dice "No hay un código fuente disponible para la ubicación actual". Esto sucede si tengo el mismo proyecto cargado en la otra instancia de si activo una nueva instancia.

¿Qué ofrece?

+1

Wow, Skynet ahora está disponible para el modelo T4? – DVK

+0

Tengo el mismo comportamiento con VS2008; No puedo establecer un punto de interrupción en el archivo .tt.(También tengo instalado el iluminador Clarius, pero no creo que esté relacionado con el punto de ruptura). Sin embargo, puedo establecer puntos de interrupción en VS2010 en el archivo .tt. No es útil para ti, pero tal vez sea de interés para alguien. –

+0

@Mark: ¡Gracias, es bueno saberlo! –

Respuesta

8

OK- lo resolvió. Lanzar una nueva instancia no es una opción, independientemente de lo que diga Oleg's article. (No diss al Sr. Sych, su blog es Evangelio para la generación de código T4!)

  1. iniciar una segunda instancia de Visual Studio,
  2. Abrir un archivo (cualquier archivo) para que el menú Depurar aparece.
  3. Seleccione "Asociar al proceso ..." y seleccionar la otra instancia VS.NET
  4. Guardar la plantilla en la instancia adjunta de VS.NET (o haga clic derecho y seleccione Ejecutar Herramienta personalizada)

Voila.

+0

También puede adjuntar al proceso desde el menú "Herramientas". –

+0

Esto parece funcionar parcialmente para mí. Todavía veo el "código fuente no disponible" en la instancia de depuración de VS. ¿Cómo obtengo el código fuente? –

4

Asegúrese de que se activa la opción de depuración en la directiva de plantilla:

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

Esto hace T4 guardar el código fuente y archivos de símbolos necesarios para la depuración en Visual Studio.

+0

¡El hombre mismo! Gracias, aparentemente, el punto de interrupción de punto rojo simplemente no funciona en VS2008, pero la conexión funciona muy bien. –

23

ajustar los siguientes:

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

Luego, en su plantilla

Debugger.Launch(); 

VS se iniciará el depurador JIT en una nueva instancia de VS 2010

+0

Funcionó perfecto ... lanza el segundo VS para la depuración; pasos a través de la plantilla y en cualquier código de depuración que haya cargado en el ensamblado. ¡Bonito! –

10

En Visual Studio 2013:

  1. Establecer un punto de interrupción i n el archivo .tt
  2. Haga clic en el archivo .tt en el explorador de soluciones
  3. Seleccionar "Depuración plantilla T4"
  4. Hecho!

No es necesario adjuntar una segunda instancia de Visual Studio.

Cuestiones relacionadas