【问题标题】:Relative path T4 for "Master" template, not children“主”模板的相对路径 T4,而不是子模板
【发布时间】:2013-11-20 02:07:53
【问题描述】:

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

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

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

hostspecific 可以解决这个问题吗?

【问题讨论】:

  • 您是否尝试过使用 $(SolutionDir) 或 $(ProjectDir) 来完全限定包含路径?

标签: c# visual-studio-2012 t4


【解决方案1】:

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

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

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

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


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

【讨论】:

    【解决方案2】:

    与其使用“包含”创建引用“主”模板的模板,不如将“主”模板放在解决方案的中心位置,然后将模板作为链接添加到各个项目中.这样,模板在项目中运行,但从其原始位置托管。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-25
      • 2013-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-31
      相关资源
      最近更新 更多