В проекте веб-приложения Visual Studio информация о настраиваемом инструменте, заданная в окне свойств файла, сохраняется в файле проекта CSPROJ для каждого файла.
В проекте веб-сайта Visual Studio нет файла проекта, только файл SLN с некоторой глобальной конфигурацией. Насколько я понимаю и знаю, здесь не хранится никакая информация, относящаяся к конкретному файлу, это должно быть всей сутью типа проекта веб-сайта.
Я все еще могу добавить в проект веб-сайта как обычный, так и предварительно обработанный (исполняемый) текстовый шаблон T4, но в окне свойств файла нет возможности настраивать конфигурацию инструмента. Тем не менее Visual Studio знает и запоминает, какой шаблон принадлежит к какому типу, т.е. использует либо TextTemplatingFileGenerator для обычного шаблона, либо TextTemplatingFilePreprocessor для предварительно обработанного шаблона, и сгенерированный результат в порядке.
Это работает для меня для новых проектов веб-сайтов в Visual Studio 2010 и 2012, но не работает с имеющимся у меня проектом веб-сайта, который вручную конвертируется из веб-приложения в веб-сайт. Все предварительно обработанные текстовые шаблоны T4 в этом проекте автоматически обрабатываются с помощью TextTemplatingFileGenerator, и, похоже, нет способа изменить это. Конечно, шаблоны вылетают из строя, и впоследствии проект невозможно построить из-за отсутствия классов.
Итак, как Visual Studio управляет информацией о настраиваемых инструментах для шаблонов T4 в проекте веб-сайта?
Если бы в диалоговом окне «Добавить новый элемент» не было бы параметра предварительно скомпилированного текстового шаблона, я бы сказал, что пользовательские инструменты вообще не поддерживаются проектом веб-сайта. Но текстовые шаблоны есть и при некоторых обстоятельствах работают нормально.