Как получить файлы t4 для сборки в Visual Studio?

StackOverflow https://stackoverflow.com/questions/405560

  •  03-07-2019
  •  | 
  •  

Вопрос

Когда я создаю свое решение С#, файлы .tt не будут создавать выходные данные файла .cs.Но если я щелкну правой кнопкой мыши файлы .tt по одному в обозревателе решений и выберу «Запустить пользовательский инструмент», будет создан .cs, поэтому настройка инструмента сборки правильна.Что мне сделать, чтобы общая сборка решения заставила пользовательский инструмент запускаться с файлами .tt?

Это было полезно?

Решение

Пол, вы также можете генерировать код во время сборки с помощью TextTransform.exe или Задача MSBuild Элтона Стоунмана.Просто имейте в виду, что поведение встроенных директив, таких как сборка и включать отличается, когда T4 работает в Visual Studio, а не в Visual Studio.хост командной строки.

Другие советы

Отвечая на мой собственный вопрос, они должны создаваться во время разработки согласно этому обсуждению:

https://web.archive.org/web/20081227142303/http://www.olegsych.com/2008/02/t4-template-directive/

В 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>

Однако для того, чтобы это работало, вам необходимо установить SDK моделирования для Visual Studio.Всю эту информацию, а также более полное описание доступных опций я нашел на этой странице: Генерация кода в процессе сборки.

В Visual Studio 2017 (возможно, и в следующих версиях) вам следует добавить это в событие Pre-build:

"$(DevEnvDir)TextTransform.exe" -out "$(ProjectDir)YourTemplate.cs" "$(ProjectDir)YourTemplate.tt"

п.с.Единственное решение, которое сработало для меня.

п.с.с.Измените путь к вашему шаблону, если он находится не в корневом каталоге проекта.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top