代码之家  ›  专栏  ›  技术社区  ›  Lasse V. Karlsen

2(3)关于T4模板的问题,获取正在处理的主文件的名称,并且能够结束处理?

  •  3
  • Lasse V. Karlsen  · 技术社区  · 14 年前

    我正试图为一个项目创建自己的DSL,我想创建一个包含此主引擎的T4文件,然后创建包含此引擎并调用它的小T4文件。

    我正在考虑对调用引擎的T4文件尝试这种格式:

    <#@ include file="EngineLib\EngineLib.tt" #>
    <# RunEngine(); #>
    dsl goes here
    

    一。我能知道主脚本的名字吗?

    基本上,在EngineLib.tt中,我可以检索包含它的脚本的完整路径和文件名吗?在这种情况下,上面显示的是脚本?或者,如果不是,它的内容呢?

    例如,在 RunEngine()

    然后,当 RunEngine

    这有道理吗?

    假设RunEngine只是输出一个类,如果我不能终止处理,那么生成的文件如下所示:

    public class SomeClass
    {
    }
    dsl goes here
    

    显然,我不希望DSL代码作为生成的输出的一部分。

    三。我找错树了吗?

    还有什么我没想到的会出错吗?

    1 回复  |  直到 8 年前
        1
  •  5
  •   Athari    14 年前
    1. 要获取脚本的名称,请使用 Host.TemplateFile . 要使主机可用,请添加 hostspecific

      <#@ template language="C#v3.5" hostspecific="true" debug="true" #>
      
    2. 要停止处理脚本,可以使用 return <# #> 括号。

      <# return GenerationEnvironment.ToString(); #>