从TextTransform.exe获取参数值到模板中

时间:2009-08-03 10:37:33

标签: t4 template-engine

我无法找到一些示例,当我使用TextTransform.exe从模板生成代码时,如何使用参数-a。在MSDN中是关于参数-a:

的描述
  

“指定指令的参数   处理器可以查询为   名称/值对。指令   处理器和标识符是可选的。   这允许指定参数   对于任何指令处理器或任何   特定指令的实例   处理器“。

我需要一些参数集,比如我的模板中的连接字符串等等。我的想法是在参数-a。

的帮助下获得配置文件的路径

此致 安东卡尔奇克

更新:要足够清楚,我希望在模板中直接读取参数。

2 个答案:

答案 0 :(得分:7)

文本模板转换工具包(T4)来自Microsoft不太受支持。只有少数例子。如果您想了解更多信息,请转到Olegs Sychs blog。 T4在这里得到了非常深刻的解释。

在我的模板中尝试从TextTransform.exe获取参数数小时后,我找到了一个解决方案:

hostspecific="true"属性添加到template元素,如下所示:

<#@ template language="C#v3.5" hostspecific="true"#>

稍后在模板中,您可以像Oleg提到的那样致电ResolveParameterValue

示例:

<#

 string parameterTest = Host.ResolveParameterValue(null, null, "someKey");
 WriteLine(parameterTest);

#>

您可以调用模板生成器:

"C:\Program Files\Common Files\Microsoft Shared\TextTemplating\1.2\TextTransform.exe" -a !!someKey!someValue

生成后应该在生成的文件中:'someValue'

答案 1 :(得分:1)

-a参数接受以下格式的值:

<ProcessorName>!<DirectiveID>!<ParameterName>

这些也是ITextTemplatingEngineHost.ResolveParameterValue方法的参数,您需要调用这些参数才能在模板代码中获取参数值。