在T4模板中,"hostspecific"是什么意思?

14
<#@ template debug="false" hostspecific="false" language="C#" #>

主机特定属性在这里代表什么意思。

2个回答

8
当设置hostspecific为"true"的模板能够访问类型为"ITextTemplatingEngineHost"(MSDN)的成员this.Host。因此你可以使用它的"ResolvePath"方法来定位模板中需要输入的文件,当你使用自定义模板引擎时这将更加有用。请参考Oleg在此处的博客:http://www.olegsych.com/2008/02/t4-template-directive/

'Olegsych'的链接已失效。 - Tatranskymedved
博客的Web Archive链接(我会在帖子中编辑链接,但编辑队列已满):https://web.archive.org/web/20130123054950/http://olegsych.com/2008/02/t4-template-directive/ - John Cummings

5
一旦设置了HostSpecific标志,您可以使用'this.Host'属性,该属性是ITextTemplatingEngineHost类型,并允许您进行文件路径解析等操作。
但是,在Visual Studio内部使用(而不是在构建时或从命令行中使用),您还可以将主机转换为IServiceProvider并连接到Visual Studio的全局服务提供程序。
这使您可以使用任何Visual Studio的API来查找模板数据或操作所包含的项目或类似操作。
这种情况的一个关键方案是使用CodeModel(或即将推出的Roslyn)来解析项目中的实时源代码,并将其用作生成元数据的来源。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接