hosts标识在t4模板中表示什么?

时间:2013-03-14 10:19:26

标签: .net code-generation t4

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

主机特定属性在这里表示什么。

2 个答案:

答案 0 :(得分:7)

将hostspecific设置为“true”的模板可以访问this.Host类型的成员ITextTemplatingEngineHostMSDN)。然后你可以使用例如它的方法是“ResolvePath”,以便在模板中找到输入所需的文件。

使用自定义模板引擎时,这更有用。 请参阅Oleg的博客:http://www.olegsych.com/2008/02/t4-template-directive/

答案 1 :(得分:5)

设置HostSpecific标志后,您可以使用'this.Host'属性,类型为ITextTemplatingEngineHost,并允许您进行文件路径解析等。

但是,在Visual Studio中使用时(不是在构建时或从命令行),您还可以将主机转换为IServiceProvider并连接到Visual Studio的全局服务提供程序。

这允许您使用Visual Studio的任何API来查找模板的数据,或操纵您包含的项目或类似的操作。

这样做的关键方案是使用CodeModel(或很快Roslyn)来解析项目中的实时源代码,并将其用作生成元数据的源。