使用VS 2012在Build上生成T4

Art*_*his 5 .net c# t4

我正在尝试使用VS2012在我的项目的每个版本上生成代码.

我的解决方案中有3个项目:

  • 项目1有一些课程
  • 项目2具有通用模板
  • project 3具有读取json文件的模板,然后调用通用模板表单项目2以生成其文件.

当我点击构建/转换所有T4模板时,没有问题,这一代进展顺利.

但我正在尝试配置我的构建以在每个构建上自动包含此步骤.

我已将此代码添加到我的csproj中:

<Import Project="$MsBuildToolsPath)\Microsoft.CSharp.Targets" />
<PropertyGroup>
   <TransformOnBuild>true</TransformOnBuild>
   <OverWriteReadOnlyOutputFiles>true</OverWriteReadOnlyOutputFiles>
</PropertyGroup>
<Import Project="$(MSBuildExtensionPath32)\Microsoft\VisualStudio\v11.0\TextTemplating\Microsoft.TextTemplating.targets"/>
Run Code Online (Sandbox Code Playgroud)

我已经在我的电脑上找到了自己的路径" \ Microsoft\VisualStudio\v11.0\TextTemplating\Microsoft.TextTemplating.targets ".我从它的例子是:get-visual-studio-to-run-a-t4-template-on-every-build

问题来自我正在使用的这一行:<#@ include file ="$(SolutionDir)\ xxx\yyy\zzz\mytemplate.tt">

我收到错误:

无法解析文件的包含文本:D:\ Projects\pppp\qqq\eeee\$(SolutionDir)\ xxx\yyy\zzz\mytemplate.tt

由于模板在"手动"(构建/转换所有T4模板)生成时运行良好,我想知道在构建时生成它的问题可能是什么.

任何的想法?

Ser*_*kin 2

问题是,当您在构建过程中运行模板时,它是在不同的主机下执行的,并且 $(SolutionDir) 宏不存在。尝试使用相对路径,例如

<#@ include file="..\xxx\yyy\zzz\mytemplate.tt">
Run Code Online (Sandbox Code Playgroud)