“主”模板的相对路径T4,而不是子项

时间:2013-11-20 02:07:54

标签: c# visual-studio-2012 t4

我的团队正在使用T4模板生成一些基于XML配置文件的代码。由于将XML结构解析为POCO,我们决定使用公共资源(“主”T4模板)来解析和存储所有其他T4模板将用于生成其各自代码的值。带有XML路径的唯一T4是主模板。

因此,通过设置hostspecific="true"并相对于主机设置路径,Master T4运行得很漂亮,但是添加(使用include file="...")并且当其中一个子T4模板运行时, XML的相对路径现在不正确......它正在寻找现在相对于孩子的位置的XML文件。

意图是Master将解析XML并通过类和属性的方式将数据存储在内存中,然后孩子们只需从主模板中的属性中提取他们需要的信息。

这可能是hostspecific解决方案吗?

2 个答案:

答案 0 :(得分:0)

为什么不将“主”模板放在解决方案的中心位置,然后将模板添加为需要的链接到单个项目中,而不是使用“包含”创建引用“主”模板的模板。 。这样,模板在项目中运行,但是从它的原始位置托管。

答案 1 :(得分:0)

包含的文件将复制到您的子模板生成的类中。 我做了类似于你想要完成的事情。

在master的模板中添加一个字段,其中包含主模板的路径。在Masters模板中使用它。

<#@ template  debug="true" language="C#" hostSpecific="true" #>
<#@ output extension=".cs" #>

<#@ include file="..\\..\commonT4\master.ttinclude" #>


<#
  PathToMaster = @"..\\..\commonT4\";