我在文本模板文件中使用以下行
<SettingsFilePath>
<#=GetParameterValue("Blah")#>\Deploy\Settings\DeploymentSetting_<#environment.Name#>_<#=workflow.Name#>.xml
</SettingsFilePath>
当我尝试修改此行以插入另一个表达式(environment.Type.ToString()
)时,如下所示
<SettingsFilePath>
<#=GetParameterValue("Blah")#>\Deploy\Settings\<#=environment.Type.ToString()#>\DeploymentSetting_<#environment.Name#>_<#=workflow.Name#>.xml
</SettingsFilePath>
我在TT模板的Visual Studio编译中收到以下错误
在块中发现了意外的开始或结束标记。确保您没有错误输入开始或结束标记,并且模板中没有任何嵌套块。
有谁知道我做错了什么?所有<#= #>
块都已正确匹配。
答案 0 :(得分:1)
谢谢大家。我根据Aaron的建议使用String.format解决了这个问题
<SettingsFilePath><#=string.Format(@"{0}\Deploy\Settings\{1}\DeploymentSetting_{2}_{3}.xml",GetParameterValue("blah"),environment.Type.ToString(), environment.Name, workflow.Name)#></SettingsFilePath>
答案 1 :(得分:0)
&#39; \&#39; 设置后的字符为escaping the next T4 tag。这里的一个示例是,如果您希望在T4模板的输出中将字符串&lt;#directive#&gt; 生成为文本,则可以在T4模板中使用以下内容:
\<#@ directive \#>
解决该问题的一种方法是将** \ Deploy \ Settings **移动到字符串变量。
您的模板的另一个问题是它正在使用&lt;#environment.Name#&gt;这是无效的。
要使您的T4模板正常工作,您发布的部分将变为:
<SettingsFilePath>
<#=GetParameterValue("Blah")#><#=deploySettings#><#=environment.Type.ToString()#>DeploymentSetting_<#=environment.Name#>_<#=environment.Name#>.xml
</SettingsFilePath>
deploySettings 在T4模板的某处定义为字符串。
string deploySettings = @"\Deploy\Settings\";