Отладчик шаблона T4 показывает неправильные строки, в то время как включены несколько файлов TT - PullRequest
2 голосов
/ 24 октября 2011

Я пытаюсь отладить следующий файл шаблона T4, используя VS2010 professional, windows 7.

Но отладчик не выделяет строку «Правильно» в файле: «Texttemplate2.tt»

Файл 1: File1.tt

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

<#@ include file="Texttemplate2.tt"  #>

<#

System.Diagnostics.Debugger.Launch();


    int a= 10;

    Write("ASS");

    GetProperty("User","UserName");

#>

Файл: Texttemplate2.tt

<#@ template debug="true" hostspecific="true" language="C#" #>
<#@ assembly name="System.Xml" #>
<#@ import namespace="System.Xml" #>
<#@ import namespace="System.IO" #>
<#+

 public void Load()
    {
        string doc=null;
        if(doc == null)
        {
            string templateDirectory = Path.GetDirectoryName(Host.TemplateFile);
            string absolutePath = Path.Combine(templateDirectory,"../../App_Data/EntityUI_MetaData_Appsettings.xml");
        }
    }
 public string GetProperty(string Entity, string prop)
    {
         Load();
         string node="none";

         if (node != "0" )
         {
            if (node == Entity )
              {
                return node;
              }
         }
        return null;
    }
 #>

Позвольте мне объяснить вопрос подробно. Я создал два вышеупомянутых файла шаблона T4. Теперь я хочу отладить код моего файла шаблона T4 «File1.tt» (не сгенерированный код). что я сделал я запустил отладчик с

System.Diagnostics.Debugger.Launch();

и установить контрольные точки

int a= 10;

. Нажатие клавиши F5 привело к достижению моей точки останова.

int a= 10;

теперь он выделен ЖЕЛТЫМ ЦВЕТОМ как ЗАДНЯЯ ЧАСТЬ и ЖЕЛТЫЙ СТРЕЛКОЙ, как в ЛЕВОМ. после этого нажмите F11, пока не достигнете

GetProperty

когда этот метод вызывается там, вы заметите, что ЖЕЛТАЯ СТРЕЛКА означает, что текущий исполняемый оператор не выделен.

Имейте в виду, предположим, что строка: 20 является следующим оператором выполнения, отладчик выделяет строку: 10 в texttemplatefile2.tt

1 Ответ

0 голосов
/ 02 декабря 2015

У меня была такая же проблема. Я не нашел способ сделать линию правильной. Тем не менее, я обнаружил, что вы можете добавить

System.Diagnostics.Debugger.Break();

В строке, которую вы хотите проверить, а затем отладить шаблон T4. Ваша IDE по-прежнему будет находиться на неправильной линии, но если вы перейдете к месту в коде, которое вызвало разрыв - где должен быть разрыв - вы можете по крайней мере проверить переменные в этой точке.

Предупреждение: Если вы пытаетесь сохранить или запустить шаблон с помощью строки отладчика, иногда происходит сбой Visual Studio. Закомментируйте это немедленно, когда вы его не используете.

...