使用生成参与者和部署参与者自定义数据库生成和部署

Visual Studio 提供了扩展点,可用于修改针对数据库项目的生成和部署操作的行为。 这些扩展点是按照一种可让它们应用于任何数据库架构提供程序 (DSP) 实现的方式进行定义的。

可用的扩展点

可以为扩展点创建扩展,如下面的表中所示:

操作

参与者类型

注释

生成

BuildContributor

在验证完项目模型后生成数据库对象时,将执行此类型的扩展。 生成参与者不仅可以访问已完成的模型,还可以访问生成任务的所有属性以及任何自定义参数。

部署

DeploymentPlanModifier

当在部署计划生成之后并在执行部署计划之前部署数据库项目(作为部署管道的一部分)时,将执行此类型的扩展。 可以使用 DeploymentPlanModifier 通过添加或移除步骤来修改部署计划。 部署参与者可以访问部署计划、比较结果以及源模型和目标模型。

部署

DeploymentPlanExecutor

当执行部署计划并提供对部署计划的只读访问时,将执行此类型的扩展。 DeploymentPlanExectutor 将根据部署计划执行操作。

支持的扩展性方案

可以实现生成或部署参与者以启用以下示例方案:

  • 在项目生成期间生成架构文档
    若要支持此方案,您需要实现 BuildContributor 并重写 OnExecute 方法以生成架构文档。 您可以重写 OnPopulateArguments 方法以公开用于控制是否运行扩展的默认参数,并指定输出文件的名称。

  • 在部署数据库项目时生成差异报表
    若要支持此方案,您需要实现 DeploymentPlanExecutor,它可在部署数据库项目时生成 XML 文件。

  • 修改部署计划以更改移动数据的时间
    若要支持此方案,您需要实现 DeploymentPlanModifier 并循环访问部署计划。 对于该计划中的每个 SqlTableMigrationStep,您将检查比较结果以确定是应执行还是跳过该步骤。

  • 在部署数据库项目时将文件复制到生成输出文件夹
    若要支持此方案,您需要实现部署参与者并重写 OnEstablishDeploymentConfiguration 方法,以指定应将哪些由项目系统标记为 DeploymentConfigurationExtension 的文件复制到输出文件夹。 也可以修改参与者以将多个文件合并为一个新文件,此文件将会复制到输出文件夹并添加到部署清单中。

此外,可以公开参与者中要写入到数据库项目文件的自定义的名称/值参数对。 通过使用这些参数,可以使参与者能够提取 MSBuild 中的信息,或使参与者的最终用户能够自定义行为。 例如,您可以允许用户指定输入文件或输出文件的名称。

常规任务

常规任务

支持内容

了解有关扩展点的更多信息:您可以阅读有关用于实现生成参与者和部署参与者的基类的信息。

创建示例参与者:了解创建生成参与者或部署参与者所需的步骤。 如果您执行这些演练,则将:

  • 创建用于生成报表的生成参与者,该报表列出了模型中的所有元素。

  • 创建用于在执行部署计划之前更改部署计划的部署参与者。

  • 创建用于在部署数据库项目时生成部署报表的部署参与者。

可以在一个程序集或多个程序集中创建所有参与者,具体取决于您想要向团队分发参与者的方式。

向团队成员分发生成参与者和部署参与者:确认参与者正常工作后,可以将其分发给团队。 可以让每个团队成员手动安装和注册功能扩展,也可以为其创建简单的安装程序。

相关方案

创建自定义数据库重构类型或目标

创建和注册用于分析数据库代码的其他规则

用自定义数据生成器生成专用的测试数据

定义数据库单元测试的自定义条件

请参见

概念

扩展 Visual Studio 的数据库功能

生成数据库并将其部署到独立开发环境中

生成数据库并将其部署到临时或生产环境中