Get argument value from TextTransform.exe into the template

安稳与你 提交于 2019-12-19 02:47:25

问题


I can't found some example how can I use argument -a when I use TextTransform.exe to generate code from templates. In MSDN is following description for argument -a:

"Specifies a parameter that a directive processor can query for as a name/value pair. The directive processor and identifier are optional. This allows parameters to be specified for any directive processor or any instance of a particular directive processor."

I need some set of arguments like connection string and so on in my template. My idea was to get a path to configuration file with help of argument -a.

Regards Anton Kalcik

UPDATE: To be clear enough, I want read parameters direct in template.


回答1:


Text Template Transformation Toolkit(T4) is from Microsoft not very well supported. Only few examples. If you want to know more go to Olegs Sychs blog. T4 is here very deeply explained.

After of hours to trying to get parameters from TextTransform.exe in my template I found a solution:

Add hostspecific="true" attribute to template element as follows:

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

Later in template you can call ResolveParameterValue as Oleg mentioned.

Example:

<#

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

#>

You call template generator so:

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

After generating should be in generated file: 'someValue'




回答2:


The -a argument accepts values in the following format:

<ProcessorName>!<DirectiveID>!<ParameterName>

These are also the parameters of ITextTemplatingEngineHost.ResolveParameterValue method which you need to call in order to get parameter value in template code.



来源:https://stackoverflow.com/questions/1221651/get-argument-value-from-texttransform-exe-into-the-template

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!