Не работает отладка предварительно обработанного шаблона T4 - окончательная первоначальная версия Visual Studio 2010

Я пытаюсь отладить предварительно обработанный шаблон T4, и я не могу войти в класс, созданный путем запуска предварительно обработанного шаблона. Я могу создать экземпляр класса, но как только я пытаюсь войти во время отладки, появляется новое окно с сообщением

Источник недоступен. Для текущего местоположения исходный код недоступен.

Насколько я понимаю, предварительно обработанные шаблоны можно отлаживать так же, как обычный класс C #, не так ли? Что конкретно вам нужно сделать, чтобы иметь возможность войти в класс, определенный предварительно обработанным шаблоном?

Вот очень простой шаблон и код вызова, с которым у меня возникла проблема:

TestPreprocessedTemplate. tt:

<#@ template language="C#" debug="true" #>
Hello <# Write("World"); #>

Тестовый код:

var template = new TestPreprocessedTemplate();
string test = template.TransformText();

Редактировать - добавлено выражение debug = "true" в соответствии с приведенным ниже предложением, проблема по-прежнему сохраняется.

Обновление - я также разместил этот вопрос на форумах MSDN и получил ответ от сотрудника MS это указывало на то, что то, что я описал выше , должно действительно работать. Кто-нибудь еще сталкивался с этой проблемой?

Обновление - С некоторой помощью форумов MSDN, похоже, проблема в директивах #line, которые добавляются в сгенерированный класс c #. Комментируя их, я перешагиваю код, как и ожидалось. Есть ли способ предотвратить добавление этих директив в сгенерированный класс? С помощью страницы ASP.NET вы можете добавить параметр LinePragmas = "false", но это не оказывает никакого влияния на T4 шаблон. Есть идеи?

8
задан JohnZoidbergMD 19 August 2010 в 13:37
поделиться

2 ответа

Похоже, что вам не хватает элемента debug="true" в заголовке шаблона, который необходим для отладки.

Также я бы взглянул на следующую статью блога, в которой подробно рассматривается отладка шаблонов T4.

1
ответ дан 6 December 2019 в 00:04
поделиться

в Visual Studio 2010 вам нужно вызвать Debugger.Launch () перед Debugger.Break ().

Олег - мастер, которого я бы проверил http://www.olegsych.com/2008/09/t4-tutorial-debugging-code-generation-files/

2
ответ дан 6 December 2019 в 00:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: