我在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