2010-03-23 2 views
14

Я пытаюсь отладить выполнение шаблона Т4 в Visual Studio 2008.Установка контрольной точки в шаблоне Т4

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

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

Что дает?

+1

Wow, Skynet теперь до модели T4? – DVK

+0

У меня такое же поведение с VS2008; Я не могу установить точку останова в файле .tt.(У меня также установлен маркер Clarius, но я не думаю, что это связано с проблемой точки останова). Тем не менее, я могу установить точки останова в VS2010 в файле .tt. Не полезно для вас, но, может быть, интерес для кого-то. –

+0

@Mark: Спасибо, это приятно знать! –

ответ

8

OK- выясненный. Запуск нового экземпляра не является вариантом, независимо от того, что говорит Oleg's article. (Нет диссами г-на Сыч, его блог не является Евангелием для генерации коды T4!)

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

Voila.

+0

Вы также можете подключиться к процессу из меню «Инструменты». –

+0

Это, кажется, работает частично для меня. Я все еще вижу «Нет исходного кода» в экземпляре отладки VS. Как получить исходный код? –

4

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

< # @ шаблон языка = «C#» отлаживать = «истина» #>

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

+0

Сам человек! Спасибо, видимо, точка останова с красной точкой просто не работает в VS2008, но приложение отлично работает. –

23

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

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

Затем в шаблоне

Debugger.Launch(); 

VS пнет ЛТ отладчик в новом экземпляре VS 2010

+0

Работал отлично ... запускает второй VS для отладки; шаги по шаблону и в любой код отладки, который вы загружаете на сборку. Ницца! –

10

В Visual Studio 2013:

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

Отсутствует необходимость второго экземпляра Visual Studio.