让Visual Studio在每个版本上运行T4模板
如何获得T4模板以在每个构建中生成其输出? 就像现在一样,当我对模板进行更改时,它只会重新生成它。
我发现了类似这样的其他问题:
在Visual Studio中T4转换和构建顺序(未答复)
如何让t4文件在Visual Studio中生成? (答案不够详细[虽然仍然复杂],甚至没有总体意义)
必须有一个更简单的方法来做到这一点!
我用JoelFan的回答来提出这个问题。 我更喜欢它,因为每次将新的.tt文件添加到项目时,都不必记住修改预生成事件。
%PATH%
transform_all ....
” transform_all.bat
@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 - 在VS2010中,在每个版本上重新生成tt模板要容易得多。 奥列格Sych的博客介绍了如何做到这一点。 简而言之:
</Project>
之前 而已。 打开你的项目。 在每个版本上,所有* .tt模板都将被重新处理
<!-- This line could already present in file. If it is so just skip it -->
<Import Project="$(MSBuildToolsPath)Microsoft.CSharp.targets" />
<!-- process *.tt templates on each build -->
<PropertyGroup>
<TransformOnBuild>true</TransformOnBuild>
</PropertyGroup>
<Import Project="$(MSBuildExtensionsPath)MicrosoftVisualStudioTextTemplatingv10.0Microsoft.TextTemplating.targets" />
有一个很棒的NuGet包可以做到这一点:
PM> Install-Package Clarius.TransformOnBuild
关于这个包的细节可以在这里找到
链接地址: http://www.djcxy.com/p/92427.html