Visual Studio 2012 为 T4 增添依赖注入与调试特性

  • Jonathan Allen
  • 曹如进

2012 年 6 月 11 日

话题:语言 & 开发

Visual Studio 2012 为 Visual Studio T4 系统增加了不少新功能,亮点包括为部署指令处理器添加 MEF 支持以及简化调试。

指令处理器用于向 T4 模板注入代码和提供外部数据。在过去,开发和部署指令处理器非常单调乏味;而现在,借助 VS 2012 与 MEF,整个过程变得非常简单。开始这项工作首先需要实现IDirectiveProcessor接口。虽然具体细节还不清楚,但不出意外的话,DirectiveProcessorSupportedDirective特性将会处理所有困难的工作。

预处理模板(Preprocessed Template)被更名为“设计时模板(Design-time template)”。这里为不了解预处理模板的读者稍微介绍一下:预处理模板是一个 T4 模板,它被编译进一个普通的.NET 程序集中。一旦这步完成,它就会脱离在 Visual Studio 的依赖,从而可以被其他应用程序调用。

借助 Visual Studio 2012,开发人员可以通过指令处理器为代表预处理模板的类添加自定义特性。一个特定的使用案例是为模板类添加 MEF 输出。

你还可以使用 @template 指令改变模板类的可见性。

为了解决 Visual Studio 与 COM 之间糟糕的交互问题,新的ServiceProviderExtensions. GetCOMService函数可以用于取代普通的 GetService 桉树。这只在当“使用特定宿主模板访问 VS 服务”时需要。

最后一个增加到 T4 中的特性是简化模板调试。在过去,你需要添加调试指令以及调试器调用;而现在,你只需要在你的 T4 模板中设置一个断点,右击文件,即可开始调试。

查看英文原文:Dependency Injection, Debugging added to T4 for Visual Studio 2012

语言 & 开发