Я пытаюсь отладить предварительно обработанный шаблон 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 шаблон. Есть идеи?
Похоже, что вам не хватает элемента debug="true"
в заголовке шаблона, который необходим для отладки.
Также я бы взглянул на следующую статью блога, в которой подробно рассматривается отладка шаблонов T4.
в Visual Studio 2010 вам нужно вызвать Debugger.Launch () перед Debugger.Break ().
Олег - мастер, которого я бы проверил http://www.olegsych.com/2008/09/t4-tutorial-debugging-code-generation-files/