如何使用预构建事件命令行将参数传递给 T4 模板
How to pass the parameters to T4 templates using pre build event command line
我需要将参数从我的预构建事件传递到我的 T4 模板。目前我正在使用以下预构建命令来构建我的 T4 模板文件,但我无法将参数传递给它。
"C:\Program Files (x86)\Microsoft Visual Studio17\Professional\Common7\IDE\texttransform.exe" "$(ProjectDir)VersionGenerator.tt"
我需要将参数传递给我的 VersionGenerator.tt 模板。
使用 TextTransform.exe
有一个命令行开关用于将参数传递给 t4 模板:-a
它接受以下格式的参数:
-a [processorName]![directiveName]!<parameterName>!<parameterValue>
使用时,考虑:
- 您可以通过
Host.ResolveParameterValue
解析参数。
- processorName 和 directiveName 是可选的,您可以省略它们。
- 您总是需要输入 '!'标记,即使您省略了可选的处理器和指令名称。
- 对于您要传递的每个参数,您需要一个
-a
开关。
- 您可以在开关值周围使用
""
。
- 更多信息请查看Generate files with the TextTransform utility。
例子
假设您有以下模板Template1.tt
:
<#@ template hostspecific="true" language="C#" #>
<#@ output extension=".txt" #>
<# string param1 = this.Host.ResolveParameterValue("", "", "param1"); #>
param1 : <#= param1 #>
以下命令:
texttransform.exe "Template1.tt" -a "!!param1!value1"
结果:
param1 : value1
预构建事件命令行应该是什么?
"C:\Program Files (x86)\Microsoft Visual Studio17\Professional\Common7\IDE\texttransform.exe" "$(ProjectDir)Template1.tt" -a "!!param1!value1"
需要更多参数?
只需在模板中定义它们并使用另一个 -a
开关传递它们:
texttransform.exe "Template1.tt" -a "!!param1!value1" -a "!!param2!value2"
我需要将参数从我的预构建事件传递到我的 T4 模板。目前我正在使用以下预构建命令来构建我的 T4 模板文件,但我无法将参数传递给它。
"C:\Program Files (x86)\Microsoft Visual Studio17\Professional\Common7\IDE\texttransform.exe" "$(ProjectDir)VersionGenerator.tt"
我需要将参数传递给我的 VersionGenerator.tt 模板。
使用 TextTransform.exe
有一个命令行开关用于将参数传递给 t4 模板:-a
它接受以下格式的参数:
-a [processorName]![directiveName]!<parameterName>!<parameterValue>
使用时,考虑:
- 您可以通过
Host.ResolveParameterValue
解析参数。 - processorName 和 directiveName 是可选的,您可以省略它们。
- 您总是需要输入 '!'标记,即使您省略了可选的处理器和指令名称。
- 对于您要传递的每个参数,您需要一个
-a
开关。 - 您可以在开关值周围使用
""
。 - 更多信息请查看Generate files with the TextTransform utility。
例子
假设您有以下模板Template1.tt
:
<#@ template hostspecific="true" language="C#" #>
<#@ output extension=".txt" #>
<# string param1 = this.Host.ResolveParameterValue("", "", "param1"); #>
param1 : <#= param1 #>
以下命令:
texttransform.exe "Template1.tt" -a "!!param1!value1"
结果:
param1 : value1
预构建事件命令行应该是什么?
"C:\Program Files (x86)\Microsoft Visual Studio17\Professional\Common7\IDE\texttransform.exe" "$(ProjectDir)Template1.tt" -a "!!param1!value1"
需要更多参数?
只需在模板中定义它们并使用另一个 -a
开关传递它们:
texttransform.exe "Template1.tt" -a "!!param1!value1" -a "!!param2!value2"