Используете предварительно скомпилированные текстовые шаблоны T4 в проекте веб-сайта Visual Studio?

В проекте веб-приложения Visual Studio информация о настраиваемом инструменте, заданная в окне свойств файла, сохраняется в файле проекта CSPROJ для каждого файла.

В проекте веб-сайта Visual Studio нет файла проекта, только файл SLN с некоторой глобальной конфигурацией. Насколько я понимаю и знаю, здесь не хранится никакая информация, относящаяся к конкретному файлу, это должно быть всей сутью типа проекта веб-сайта.

Я все еще могу добавить в проект веб-сайта как обычный, так и предварительно обработанный (исполняемый) текстовый шаблон T4, но в окне свойств файла нет возможности настраивать конфигурацию инструмента. Тем не менее Visual Studio знает и запоминает, какой шаблон принадлежит к какому типу, т.е. использует либо TextTemplatingFileGenerator для обычного шаблона, либо TextTemplatingFilePreprocessor для предварительно обработанного шаблона, и сгенерированный результат в порядке.

Это работает для меня для новых проектов веб-сайтов в Visual Studio 2010 и 2012, но не работает с имеющимся у меня проектом веб-сайта, который вручную конвертируется из веб-приложения в веб-сайт. Все предварительно обработанные текстовые шаблоны T4 в этом проекте автоматически обрабатываются с помощью TextTemplatingFileGenerator, и, похоже, нет способа изменить это. Конечно, шаблоны вылетают из строя, и впоследствии проект невозможно построить из-за отсутствия классов.

Итак, как Visual Studio управляет информацией о настраиваемых инструментах для шаблонов T4 в проекте веб-сайта?

Если бы в диалоговом окне «Добавить новый элемент» не было бы параметра предварительно скомпилированного текстового шаблона, я бы сказал, что пользовательские инструменты вообще не поддерживаются проектом веб-сайта. Но текстовые шаблоны есть и при некоторых обстоятельствах работают нормально.


person famousgarkin    schedule 22.04.2013    source источник


Ответы (2)


Кажется, мне потребовалось некоторое время, чтобы понять, что ничто не мешает мне перенести шаблоны из веб-проекта и поместить их в проект библиотеки, где всегда есть файл проекта, и он будет хорошо работать независимо от типа сети. проект, который решает мою проблему.

Я до сих пор не знаю, как предварительно скомпилированные текстовые шаблоны T4 должны работать с проектами типа веб-страницы. Не стесняйтесь расширять это, если знаете больше.

person famousgarkin    schedule 25.04.2013

DLL-библиотека настраиваемого мастера в шаблоне элемента устанавливает предварительно обработанный элемент, когда вы выполняете Добавить новый элемент. В качестве запасного варианта проект просто использует следующий ключ реестра для настройки обычных шаблонов.

HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0_Config\Projects\{E24C65DC-7377-472b-9ABA-BC803B73C61A}\FileExtensions\.tt\CustomTool

Если у вас есть только предварительно обработанные шаблоны, вы можете изменить это на TextTemplatingFilePreprocessor вместо TextTemplatingFileGenerator

В противном случае повторное добавление набора файлов из диалогового окна добавления нового элемента и копирование содержимого должно работать.

person GarethJ    schedule 21.05.2013