Могу ли я изменить автоматически созданный суффикс по умолчанию выходного файла cs текстового шаблона T4 Visual Studio 2010?

Я использую текстовый шаблон T4 во время выполнения. Я хотел бы, чтобы сгенерированный препроцессором файл C# имел выходное расширение.tt.cs, однако по умолчанию оно имеет только расширение.cs. Если бы это был текстовый шаблон времени разработки, я мог бы добавить выходную директиву расширения, чтобы обеспечить такое поведение. Однако, похоже, что такие директивы не влияют на шаблоны времени выполнения. Кто-нибудь знает способ сделать это с помощью шаблонов времени выполнения?

<#@ output extension=".tt.cs" #>

2 ответа

Решение

Там нет тривиального пути, но это может быть сделано.

Сначала создайте собственный генератор файлов, полученный из TemplatePreprocessor в Microsoft.VisualStudio.TextTemplationg.VSHost.10.0.dll, и зарегистрируйте его в Visual Studio.

Затем overide ProcessTemplate() и после вызова базовой реализации вызовите SetFileExtension с любым расширением, которое вы хотите.

Это большая работа, хотя для такого маленького изменения.

Я нашел следующее по этой ссылке. Может быть полезно вам, так как он показывает, как установить.cs, используя предварительно обработанный шаблон, но только если вы вызываете шаблон из другого шаблона. Не нашли ничего, показывающего, что это возможно, если запустить из кода C# или VB.

Кажется, директива <# @ output #> не влияет на предварительно обработанные шаблоны. Ошибка не генерируется, если предварительно обработанный шаблон содержит эту директиву. Хостинговое приложение отвечает за изменение расширения выходного файла.

Другие вопросы по тегам