Estoy intentando depurar una plantilla T4 preprocesada y no puedo entrar en la clase creada ejecutando la plantilla preprocesada. Puedo crear una instancia de la clase, pero tan pronto como trato de entrar en la depuración, aparece una nueva ventana que diceLa depuración de la plantilla preprocesada T4 no funciona - Visual Studio 2010 RTM
No hay fuente disponible. No hay un código fuente disponible para la ubicación actual.
Mi comprensión es que las plantillas preprocesadas se pueden depurar al igual que una clase C# normal, ¿no es así? ¿Hay algo en particular que deba hacer para poder ingresar a la clase definida por una plantilla preprocesada?
Aquí es una plantilla muy simple y el código de llamada que soy experimentar el problema:
TestPreprocessedTemplate.tt: Código
<#@ template language="C#" debug="true" #>
Hello <# Write("World"); #>
prueba:
var template = new TestPreprocessedTemplate();
string test = template.TransformText();
Editar - Agregado la declaración debug = "true" según la sugerencia a continuación, sigue teniendo el mismo problema.
actualización - Yo también publicó esta pregunta en los foros de MSDN y recibió respuesta por parte de un empleado de la EM que indicaba que sí lo he descrito anteriormente debe hecho trabajar. ¿Alguien más se encuentra con este problema?
Actualización - Con algo de ayuda de los foros de MSDN, parece que el problema es con las directivas #line que se agregan a la clase C# generada. Comentarlos me permite recorrer el código como se esperaba. ¿Hay alguna forma de evitar que estas directivas se agreguen a la clase generada? Con una página ASP.NET puede agregar el parámetro LinePragmas = "false", pero eso no parece tener ningún efecto en una plantilla T4. ¿Algunas ideas?
Parece que usted está utilizando el editor de T4 tangible, que exhibe este problema. Si deshabilita este editor, debería encontrar que la depuración de una plantilla preprocesada lo lleva al lugar correcto en el archivo tt mismo. Si realmente desea depurar el archivo C#/VB generado, entonces la técnica de Paiden para eliminar las directivas #line descritas a continuación es buena. – GarethJ
Consulte la pregunta relacionada http://stackoverflow.com/q/2945450/141172 –