C# 使用VS 2012在构建时生成T4
我正在尝试使用VS2012在项目的每个构建上生成代码 我的解决方案中有3个项目:C# 使用VS 2012在构建时生成T4,c#,.net,t4,C#,.net,T4,我正在尝试使用VS2012在项目的每个构建上生成代码 我的解决方案中有3个项目: 项目1有一些类 项目2具有通用模板 project 3的模板读取json文件,然后从project 2调用通用模板来生成其文件 当我点击Build/Transform All T4 Templates时,没有问题,生成过程很顺利 但我正在尝试配置我的构建,以便在每个构建中自动包含此步骤 我已将此代码添加到我的csproj中: <Import Project="$MsBuildToolsPath)\Micr
- 项目1有一些类
- 项目2具有通用模板
- project 3的模板读取json文件,然后从project 2调用通用模板来生成其文件
<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”。
我举的例子是:
问题来自我使用的这一行:
我收到了错误信息:
无法解析文件的包含文本:
D:\Projects\pppp\qqq\eeee\$(SolutionDir)\xxx\yyy\zzz\mytemplate.tt
由于模板在“手动”生成时工作良好(构建/转换所有T4模板),我想知道在构建时生成它可能会有什么问题
有什么想法吗?问题是,当您在构建过程中运行模板时,它是在不同的主机下执行的,并且$(SolutionDir)宏不存在。尝试使用相对路径,例如
<#@ include file="..\xxx\yyy\zzz\mytemplate.tt">
可以与include一起使用,但是组装呢?我使用$(SolutionDir)来定位它们,如果我尝试相对路径,我会有同样的错误。给定的程序集名称或代码基无效。谢谢你的帮助。我最终使用了绝对路径,因为其他任何东西都正常工作,我需要继续。我不确定相对路径有什么问题,但你可以尝试Host.ResolvePath
method我通过定义一个环境变量并在路径中使用它来解决这个问题(例如,%EnvVar%\xxx\yyy\zzz\mytemplate.tt
)。