8

当我使用 TextTransform.exe 从模板生成代码时,我找不到一些示例如何使用参数 -a。在MSDN中,参数 -a 的描述如下:

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

我的模板中需要一些参数,如连接字符串等。我的想法是在参数 -a 的帮助下获取配置文件的路径。

问候安东卡尔奇克

更新:为了清楚起见,我想直接在模板中读取参数。

4

2 回答 2

8

Text Template Transformation Toolkit(T4) 来自 Microsoft 的支持不是很好。只有几个例子。如果您想了解更多信息,请访问Olegs Sychs 博客。T4在这里解释得非常深入。

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

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

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

稍后在模板中,您可以ResolveParameterValue像 Oleg 提到的那样调用。

例子:

<#

 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'

于 2009-09-16T11:12:10.357 回答
1

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

<ProcessorName>!<DirectiveID>!<ParameterName>

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

于 2009-09-08T11:41:23.757 回答