当我构建我的 c# 解决方案时,.tt 文件不会创建 .cs 文件输出。但是,如果我在解决方案资源管理器中一次一个地右键单击 .tt 文件并选择“运行自定义工具”,则会生成 .cs,因此构建工具设置是正确的。我该怎么做才能构建整体解决方案以强制自定义工具在 .tt 文件上运行?
P a u l
问问题
10532 次
4 回答
9
Paul,您还可以在构建时使用TextTransform.exe或Elton Stoneman 的 MSBuild 任务生成代码。请记住,当 T4 在 Visual Studio 和命令行主机中运行时,内置指令(如程序集和包含)的行为是不同的。
于 2009-01-02T01:18:28.343 回答
5
回答我自己的问题,它们应该根据这个讨论在设计时生成:
https://web.archive.org/web/20081227142303/http://www.olegsych.com/2008/02/t4-template-directive/
于 2009-01-01T22:48:33.513 回答
1
在 Visual Studio 2017(也可能是下一个版本)中,您应该在 Pre-build 事件中添加它:
"$(DevEnvDir)TextTransform.exe" -out "$(ProjectDir)YourTemplate.cs" "$(ProjectDir)YourTemplate.tt"
ps 唯一对我有用的解决方案。
pss 如果模板不在根项目目录中,请更改模板的路径。
于 2019-06-21T15:29:16.640 回答
0
在 Visual Studio 2013 中,我只需将这些行添加到 .csproj 文件中,就可以让 .tt 文件重新生成它们的目标:
<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>
但是,要使其正常工作,您需要安装Visual Studio 的 Modeling SDK。我在此页面上找到了所有这些信息以及可用选项的更完整描述:构建过程中的代码生成。
于 2015-10-08T22:50:23.833 回答