Продукт трансформации T4 во время сборки используется только в следующей сборке

У меня есть проект VS, который содержит:

предварительное действиеTextTransform наtemplate.tt чтобы генерироватьgenerated.cs

generated.cs указан как один из файлов для компиляции (т.е. в списке файлов проекта)

Когда я собираю проект, выполняется действие перед сборкой,generated.cs воссоздается, но VS компилирует предыдущую версиюgenerated.cs (который, я думаю, загружается в память при запуске процесса сборки).

Как заставить сборку использовать новую версиюgenerated.cs (т. е. созданный в действии перед сборкой)? Как форсировать порядок сборки?

Обратите внимание, что ввод текста преобразования является динамическим и, следовательно, не может быть сделано во время разработки.

Ответы на вопрос(2)

что вам нужно пользовательское действие перед сборкой. Просто добавьте.tt» файл в свой проект и установить его "Custom Tool " свойство "TextTemplatingFileGenerator», Возможно, вы захотите убедиться, что файлы * .generated.cs также добавлены в проект, но я думаю, что VS позаботится об этом.

 Derek Morrison06 дек. 2010 г., 13:11
Это неКажется, это работает для меня. Я думаю, что Звика говорил, что они хотят, чтобы шаблон Т4 творил свою магию всякий раз, когда его проект создается. Это то, что я тоже хочу. Хотя я'Использование T4MVC с ASP.NET MVC 3. Например, если я возьму проект, который строит, добавлю новый файл, который должен получить T4MVC, а затем соберу проект снова, я нене вижу изменений, которые должны были быть сделаны T4MVC. Я должен явно запустить обновление, щелкнув правой кнопкой мыши на файле .tt и выбрав «Запустить пользовательский инструмент».
 Tomer W27 дек. 2017 г., 10:19
это будет генерировать только при сохранении.tt файл.

Теперь решение этой проблемы! У Олега Сыча есть запись в его блоге, подробно рассказывающая, как заставить работать преобразование во время сборки.

Вот'Источник:https://web.archive.org/web/20140116193428/http://www.olegsych.com/2010/04/understanding-t4-msbuild-integration/

По сути, вы просто включаете цели сборки T4 в файл проекта и устанавливаете для свойства TransformOnBuild значение true.

Вот'Соответствующий отрывок:

<import project="$(MSBuildToolsPath)\Microsoft.CSharp.targets">
  <propertygroup>
    <transformonbuild>true</transformonbuild>
  </propertygroup>
<import project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\TextTemplating\v10.0\Microsoft.TextTemplating.targets">
</import></import>

Обратите внимание, что файл Microsoft.TextTemplating.targets должен быть включен ПОСЛЕ Microsoft.CSharp.targets.

 Tomer W27 дек. 2017 г., 22:47
Это создает файлы, но опускает их относительное пространство имен. как я могу преодолеть это?

Ваш ответ на вопрос