代码生成和文本模板中的新增功能

通过 Visual Studio 文本模板,可以在运行时生成应用程序的代码和资源,以及任何类型的文本文件或文档。

Service Pack 1 (SP1) 中的新增功能

通过安装适用于 Visual Studio 2010 的 SP1,您可以获得以下功能。

  • 调试程序集
    如果您的文本模板加载正在调试的程序集,则您可以轻松重新生成该程序集。

    在 SP1 以前的 Visual Studio 版本中,有时难于重新生成某个模板最近已加载的程序集,因为该模板锁定了该程序集。 从 SP1 开始,模板加载程序集的副本,以便不锁定原始程序集。 如果您重新生成程序集,然后在下一次执行模板时,它将会重新加载程序集的新副本。 有关更多信息,请参见T4 程序集指令

  • 文本模板之间的继承
    您可以定义对于多个变量通用的、包含文本块框架的文本模板。 变量模板可以从通用模板继承。 有关示例和更多信息,请参见T4 模板指令使用预处理 T4 文本模板生成运行时文本

Visual Studio 2010 中的新功能和增强功能

功能

主题

预处理文本模板:提供在任何应用程序中,运行时生成文本文件的便捷方法。

使用预处理 T4 文本模板生成运行时文本

生成集成:确保生成的程序文件随其源文件或模型保持更新。 安装 Domain-Specific Language Tools 时,此功能可用。

生成过程中的代码生成

MsBuild 的文本转换任务:使您可以在 Visual Studio 命令行中生成项目时,转换项目中的特定文件。

如果具有调用 TextTransform.exe 的脚本,您可能会发现此方法更灵活。

生成过程中的代码生成

对 Visual Studio Modelbus 的支持:提供从文本模板访问多个模型的标准方法。

Microsoft.VisualStudio.TextTemplating.Modeling.ModelBusEnabledTextTransformation

与 DSL 和模型分离:无需域特定语言即可使用文本模板,即使最初同时引入了这两种功能。 文本模板和文件生成是 Visual Studio 的内置部件。

从域特定语言生成代码

对服务提供程序的访问:在 ModelingTextTransform 的属性中可用。

T4 文本模板实用工具方法

访问环境:在文本模板指令中,您可以使用诸如 $(ProjectDir) 等的 Visual Studio 宏或诸如 %ProgramFiles% 等的 Windows 环境变量。

T4 文本模板指令

自定义方面的更改

已进行了以下改进(如果您对文本模板化过程进行了自定义,则这些改进可能会对您产生影响)。

功能

主题

命名空间和程序集更改:某些类型已移至程序集 Microsoft.VisualStudio.TextTemplating.Interfaces。

演练:创建自定义指令处理器

演练:创建自定义文本模板宿主

会话字典:传递到执行文本模板的应用程序域的序列化字典。 该字典为文本模板化宿主提供将数据传递到文本模板代码中的标准方法。

演练:创建自定义文本模板宿主

自从 Visual Studio 2008 以来的其他更改

文本模板中引用的程序集

当前项目的引用不再用于查找程序集。

在程序集指令中,明确声明所需程序集的位置。

您可以使用诸如 $(ProjectDir) 等的 Visual Studio 宏或诸如 %ProgramFiles% 等的 Windows 环境变量作为程序集位置的一部分。

文本转换程序集

您可能需要引用以使用文本模板的程序集都有后缀“10.0”:

  • Microsoft.VisualStudio.TextTemplating.10.0.dll

  • Microsoft.VisualStudio.TextTemplating.Interfaces.10.0.dll

  • Microsoft.VisualStudio.TextTemplating.Vshost.10.0.dll

  • Microsoft.VisualStudio.TextTemplating.Modeling.10.0.dll

命名空间

不存在命名空间“Microsoft.VisualStudio.TextTemplating.Interfaces”。 这是自 Visual Studio 2010 的 Beta2 版本以来的更改。

启动调试器

若要从文本模板启动调试器,请在要开始逐句通过执行的点处插入此调用:

System.Diagnostics.Debugger.Launch();

若要在后面的断点处返回调试器,请调用:

System.Diagnostics.Debugger.Break();

默认语言版本

将始终使用编译器的最新版本 (4) 来编译文本模板。 在 Visual Studio 2008 中,默认编译器是 2.0,但是您可以指定模板编程语言的更新版本 - 例如 <#@ template language="VBv3.5" #>。 在 Visual Studio 2010 中,将忽略版本号并报告一条警告消息。 如果您具有要同时用于 Visual Studio 的两个版本的模板,则可以忽略该警告。

请参见

概念

Visual Studio 2010 中的新增功能