让VisualStudio在每个构建上运行一个T4模板

让VisualStudio在每个构建上运行一个T4模板

如何获得T4模板以在每次构建时生成其输出?就像现在一样,它只在我更改模板时才重新生成它。

我发现了其他类似的问题:

Visual Studio中的T4转换与生成顺序(未答复)

如何在Visualstudio中生成T4文件?(答案不够详细(但仍然很复杂),甚至没有完全意义)

必须有更简单的方法来做到这一点!


小怪兽爱吃肉
浏览 1275回答 3
3回答

弑天下

我用Joelfan的回答提出了这个问题。我更喜欢它,因为您不必记得每次向项目添加新的.tt文件时都要修改预构建事件。将TextTransform.exe添加到%PATH%创建了一个名为Transform_all.bat的批处理文件(见下文)创建预构建事件“transform_all ..\.."变换所有蝙蝠@echo off SETLOCAL ENABLEDELAYEDEXPANSION :: set the working dir (default to current dir) set wdir=%cd% if not (%1)==() set wdir=%1 :: set the file extension (default to vb) set extension=vb if not (%2)==() set extension=%2 echo executing transform_all from %wdir% :: create a list of all the T4 templates in the working dir dir %wdir%\*.tt /b /s > t4list.txt echo the following T4 templates will be transformed: type t4list.txt :: transform all the templates for /f %%d in (t4list.txt) do ( set file_name=%%d set file_name=!file_name:~0,-3!.%extension% echo:  \--^> !file_name!     TextTransform.exe -out !file_name! %%d ) echo transformation complete

翻阅古今

我同意GarethJ-在VS 2010中,在每个构建上重新生成TT模板要容易得多。奥列格·赛奇的博客描述了如何做到这一点。简言之:安装VisualStudioSDK安装VisualStudio 2010建模和可视化SDK在文本编辑器项目文件中打开并添加到文件末尾,但在此之前</Project>就这样。打开你的项目。在每个构建中,所有*.tt模板都将被重新处理。<!-- This line could already present in file. If it is so just skip it&nbsp; --><Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /><!-- process *.tt templates on each build&nbsp; --><PropertyGroup>&nbsp; &nbsp; <TransformOnBuild>true</TransformOnBuild></PropertyGroup><Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\TextTemplating\v10.0\Microsoft.TextTemplating.targets" />

慕码人8056858

有一个很棒的NuGet软件包就是这样做的:PM>&nbsp;Install-Package&nbsp;Clarius.TransformOnBuild有关该包的详细信息可以如下在这里发现的
打开App,查看更多内容
随时随地看视频慕课网APP