Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用VS 2012在构建时生成T4_C#_.net_T4 - Fatal编程技术网

C# 使用VS 2012在构建时生成T4

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

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

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

  • 项目1有一些类
  • 项目2具有通用模板
  • project 3的模板读取json文件,然后从project 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”。 我举的例子是:

问题来自我使用的这一行:

我收到了错误信息:

无法解析文件的包含文本: 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
)。