Отладчик шаблонов T4 показывает неправильные строки при включении нескольких файлов TT

#c# #asp.net #visual-studio-2010 #t4

#c# #asp.net #visual-studio-2010 #t4

Вопрос:

Я пытаюсь отладить следующий файл шаблона 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:

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

 System.Diagnostics.Debugger.Break();
  

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

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