Установка точки останова в шаблоне T4 - PullRequest
16 голосов
/ 23 марта 2010

Я пытаюсь отладить выполнение шаблона T4 в Visual Studio 2008.

Вся информация, которую я нахожу при отладке шаблонов T4 в Visual Studio 2008, говорит о том, что вы можете установить точку останова (красная точка) в шаблоне, как если бы это был обычный файл кода. У меня установлен инструмент подсветки кода Clarius T4, поэтому мой шаблон T4 цветной, но Я не могу установить точку останова. Когда я нажимаю на полях, ничего не происходит.

Я пробовал Debugger.Break (), и он запускает новый экземпляр VS.NET, но не может загрузить код из моего шаблона. Я получаю диалоговое окно с текстом «Нет исходного кода для текущего местоположения». Это происходит, если у меня загружен тот же проект в другом экземпляре или если я запускаю новый экземпляр.

Что дает?

Ответы [ 4 ]

25 голосов
/ 10 декабря 2010

Установите следующее:

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

Тогда в вашем шаблоне

Debugger.Launch();

VS запустит отладчик JIT в новом экземпляре VS 2010

14 голосов
/ 20 мая 2014

В Visual Studio 2013:

  1. Установить точку останова в файле .tt
  2. Щелкните правой кнопкой мыши файл .tt в обозревателе решений
  3. Выберите «Шаблон отладки T4»
  4. Готово!

Нет необходимости в подключении второго экземпляра Visual Studio.

8 голосов
/ 23 марта 2010

ОК - разобрался. Запуск нового экземпляра не возможен, независимо от того, о чем говорит статья Олега . (Не смущайтесь, мистер Сыч, его блог - это Евангелие для генерации кода T4!)

  1. Запустите второй экземпляр Visual Studio,
  2. Откройте файл (любой файл), чтобы появилось меню «Отладка».
  3. Выберите «Присоединить к процессу ...» и выберите другой экземпляр VS.NET
  4. Сохраните шаблон в прикрепленном экземпляре VS.NET (или щелкните правой кнопкой мыши и выберите «Запустить пользовательский инструмент»)

Вуаля.

5 голосов
/ 24 марта 2010

Убедитесь, что вы включили опцию отладки в директиве шаблона:

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

Это позволяет T4 сохранять исходный код и файлы символов, необходимые для отладки в Visual Studio.

...