我在VS 2010中构建了一个插件,我陷入了T4代。 现在我已经实现(如MSDN建议)自定义T4主机生成我的T4结果我用它这样:T4模板和运行时参数
const string content = @"c:\Simple.tt";
var engine = new Engine();
var host = new MyTemplateHost();
var result = engine.ProcessTemplate(File.ReadAllText(content), host);
foreach (CompilerError error in host.Errors)
{
Console.WriteLine(error.ErrorText);
}
这工作,直到我传递参数的模板。只要我在.tt文件中创建一个参数,主机就会发出警告,说它不知道如何解决它。 我看到你可以使用TemplateSession来做到这一点,但我没有弄清楚如何将它传递给我的主机? 有没有更好的方式从.tt使用C#生成代码并在运行时传递参数?也许我走错了路。
这代码似乎使用preprocesed模板(如果我理解你的类型SimpleTemplate承担。看我为如何去使用这个内置的VS主机。 – GarethJ 2011-01-13 02:42:52
非常有帮助谢谢回答。在2012年,也适用此呼叫后`Initialize()`你也可以通过检查`template.Errors.HasErrors`来查看类型是否正确传递:) – 2013-11-24 12:22:39