我需要将预构建事件中的参数传递给我的T4模板。目前,我正在使用以下预构建命令来构建我的T4模板文件,但我无法将参数传递给它。
"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\texttransform.exe" "$(ProjectDir)VersionGenerator.tt"
我需要将参数传递给我的VersionGenerator.tt模板。
我需要将预构建事件中的参数传递给我的T4模板。目前,我正在使用以下预构建命令来构建我的T4模板文件,但我无法将参数传递给它。
"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\texttransform.exe" "$(ProjectDir)VersionGenerator.tt"
使用TextTransform.exe
,有一个命令行开关可以传递参数到t4模板:-a
,它接受以下格式的参数:
-a [processorName]![directiveName]!<parameterName>!<parameterValue>
在使用时,请考虑以下事项:
Host.ResolveParameterValue
解析参数。processorName
和directiveName
是可选的,您可以省略它们。-a
开关。""
。示例
假设您有以下模板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 Studio\2017\Professional\Common7\IDE\texttransform.exe" "$(ProjectDir)Template1.tt" -a "!!param1!value1"
需要更多参数吗?
只需在模板中定义并使用另一个-a
开关将它们传递即可:
texttransform.exe "Template1.tt" -a "!!param1!value1" -a "!!param2!value2"
this.Host.ResolveParameterValue("", "", "Foo")
的参数名称是否区分大小写?能否请您解释一下。 - Venkattry { changeset = this.Host.ResolveParameterValue("-", "-", "changeset");
,而这个参数不是我传递的唯一一个参数,而是第二个参数。我像这样传递了2个参数,但只有第二个参数为空...而第一个参数完全正常。同时传递两个参数:-a "!!buildConfiguration!$(ConfigurationName)" -a "!!changeset!asdasd"
。 - iBobb