我可以用用户输入创建一个t4文件吗?

我正在尝试通过命令行为CS文件生成一个生成器.我想使用T4,因为我不太了解生成文件并轻松移动它们的另一种方法.我遇到的问题是尝试将用户输入数据传递到T4文件.

例如,我程序中的用户将输入他们的姓名

鲍勃

我的T4模板我希望输出为

你好鲍勃

除非将数据写入文本文件并从中读取,否则似乎无法将数据传递给它.还有其他方法可以做到这一点吗?在某些时候,我需要它来处理属性集合,这可能很难在文本文件中正确读取.

解决方法:

使用T4 parameter directive,您可以将值从应用程序域传递到T4模板中.

创建一个参数:

<#@ parameter type="Full.TypeName" name="ParameterName" #>

将其放在模板中:

<#@ template language="C#" #>
<#@ parameter type="System.String" name="MyUserName" #>
<# Console.Write(MyUserName) #>

从代码中填充它:

// Get a service provider – how you do this depends on the context:
IServiceProvider serviceProvider = dte; // or dslDiagram.Store, for example 
// Get the text template service:
ITextTemplating t4 = serviceProvider.GetService(typeof(STextTemplating)) 
                                                     as ITextTemplating;
ITextTemplatingSessionHost host = t4 as ITextTemplatingSessionHost;
// Create a Session in which to pass parameters:
host.Session = host.CreateSession();
// Add parameter values to the Session:
session["MyUserName"] = "Bob";
// Process a text template:
string result = t4.ProcessTemplate("MyTemplateFile.t4",
                                    System.IO.File.ReadAllText("MyTemplateFile.t4"));

Another helpful link

上一篇:导入Orabbix_export_full.xml模板报错:主机群组 "Templates" 已存在.


下一篇:vue的X-Templates