我试图效仿这个例子:
http://msdn.microsoft.com/en-us/library/gg586947.aspx
试图找出如何重构以下现有代码,以便我们可以使用VS' ITextTemplatingEngineHost。
template.DatabaseObjectNameWithSchema = databaseObjectName;
template.Database = database;
template.Namespace = templateNamespace;
template.Dialect = dialect;
template.Host = ???
return template.TransformText();
我可以获得模板服务和会话主持人:
ITextTemplating t4 = serviceProvider.GetService(typeof(STextTemplating)) as ITextTemplating;
ITextTemplatingSessionHost sessionHost = t4 as ITextTemplatingSessionHost;
但是,我不能为我的生活找到如何获得引擎主机...
答案 0 :(得分:1)
听起来你正试图获得这个界面:ITextTemplatingEngineHost。如果是这样,您可以尝试以下代码:
STextTemplating vsHost = (STextTemplating)Microsoft.VisualStudio.Shell.Package.GetGlobalService(typeof(STextTemplating));
var vsHostEngine = vsHost as ITextTemplatingEngineHost;
要完全了解T4模板的工作原理,您可以使用reflector之类的工具查看来源。在您的计算机上搜索名为Microsoft.VisualStudio.TextTemplating.VSHost.11.0.dll或类似内容的文件,不确定您正在使用的Visual Studio版本。如果您在反射器中打开该文件并进行研究,您应该能够找到所需的任何答案。