Когда я создаю свое решение С#, файлы .tt не будут создавать выходные файлы .cs. Но если я щелкнул по файлам .tt по одному за раз в проводнике решений и выберите "Запустить пользовательский инструмент".c генерируется, поэтому настройка инструмента сборки верна. Что я делаю, чтобы получить общую сборку решения, чтобы заставить настраиваемый инструмент работать в файлах .tt?
Как получить файлы t4 для создания в visual studio?
Ответ 1
Пол, вы также можете сгенерировать код во время сборки с помощью TextTransform.exe или Задача MSBuild Элтона Стонемана. Просто имейте в виду, что поведение встроенных директив, например assembly и include отличается, когда T4 работает в Visual Studio по сравнению с хостом командной строки.
Ответ 2
Отвечая на мой собственный вопрос, они должны быть созданы во время разработки в соответствии с этим обсуждением:
https://web.archive.org/web/20081227142303/http://www.olegsych.com/2008/02/t4-template-directive/
Ответ 3
В Visual Studio 2013 я смог получить файлы .tt для восстановления своих целей, просто добавив эти строки в файл .csproj:
<PropertyGroup>
<!-- Get the Visual Studio version – defaults to 10: -->
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<!-- Keep the next element all on one line: -->
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
<!-- To enable build tasks on your development computer, install Modeling SDK for Visual Studio. https://www.microsoft.com/en-us/download/details.aspx?id=40754 -->
<Import Project="$(VSToolsPath)\TextTemplating\Microsoft.TextTemplating.targets" />
<!-- Run the Transform task at the start of every build -->
<PropertyGroup>
<TransformOnBuild>true</TransformOnBuild>
</PropertyGroup>
<!-- Overwrite files that are read-only, for example because they are not checked out -->
<PropertyGroup>
<OverwriteReadOnlyOutputFiles>true</OverwriteReadOnlyOutputFiles>
</PropertyGroup>
<!-- Transform every template every time -->
<PropertyGroup>
<TransformOutOfDateOnly>false</TransformOutOfDateOnly>
</PropertyGroup>
Однако для этого вам нужно будет установить Modeling SDK для Visual Studio. Я нашел всю эту информацию вместе с более полным описанием доступных вариантов на этой странице: Генерация кода в процессе сборки.
Ответ 4
В Visual Studio 2017 (возможно, и в следующих версиях) вы должны добавить это в событие Pre-build:
"$(DevEnvDir)TextTransform.exe" -out "$(ProjectDir)YourTemplate.cs" "$(ProjectDir)YourTemplate.tt"
PS Единственное решение, которое сработало для меня.
pss Измените путь к вашему шаблону, если он находится не в корневом каталоге проекта.