5

我正在尝试使用 VS2012 在我的项目的每个构建中生成代码。

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

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

当我点击 Build/Transform All T4 Templates 时,没有问题,生成顺利。

但我正在尝试将我的构建配置为在每个构建中自动包含此步骤。

我已将此代码添加到我的 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"/>

我已经从我的电脑上找到了路径“ \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 模板),我想知道在构建时生成它可能是什么问题。

任何的想法?

4

1 回答 1

2

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

<#@ include file="..\xxx\yyy\zzz\mytemplate.tt">
于 2012-10-09T14:17:07.097 回答