Visual studio 2012 VS 2013数据库项目:基于构建配置运行的部署后脚本

Visual studio 2012 VS 2013数据库项目:基于构建配置运行的部署后脚本,visual-studio-2012,visual-studio-2013,database-project,sql-server-data-tools,Visual Studio 2012,Visual Studio 2013,Database Project,Sql Server Data Tools,在Visual Studio 2012/2013中基于SSDT的数据库项目中,是否有一种方法/机制可用于根据构建配置运行不同的部署后脚本集?我希望通过使用“测试”配置进行部署来预先填充数据以进行测试/持续集成,但自然不希望在其他环境中这样做。但是,我似乎找不到一种方法将部署后脚本有条件地链接到生成配置,这对我来说非常奇怪。您可以通过编辑MSBuild使用的.sqlproj文件来实现这一点。然后,当您在“测试”配置中构建时,您会在“发布”模式下构建时获得不同的dacpac内容。例如: 创建项目并

在Visual Studio 2012/2013中基于SSDT的数据库项目中,是否有一种方法/机制可用于根据构建配置运行不同的部署后脚本集?我希望通过使用“测试”配置进行部署来预先填充数据以进行测试/持续集成,但自然不希望在其他环境中这样做。但是,我似乎找不到一种方法将部署后脚本有条件地链接到生成配置,这对我来说非常奇怪。

您可以通过编辑MSBuild使用的.sqlproj文件来实现这一点。然后,当您在“测试”配置中构建时,您会在“发布”模式下构建时获得不同的dacpac内容。例如:

  • 创建项目并添加部署后脚本
  • 卸载项目并编辑.sqlproj文件
  • 将包含PostDeploy脚本的ItemGroup更改为如下所示:

  • 内置调试配置并解压缩dacpac:不包括postdeploy.sql文件
  • 内置测试配置并解压缩dacpac:postdeploy.sql文件将在那里

您也可以使用SQLCMD变量来执行类似的操作。如果值==“Test”,则运行一组值。如果没有,请运行其他程序。我在这里写了一篇博客:


它不是在构建时完成的,脚本总是以这种方式包含的,但如果这不是一个问题,它将为您提供一种方法,使您可以轻松编写代码,以便在各种环境中轻松运行。

Hmm。。。如何将SQLCMD值设置为生成配置?我试图使用
$(配置)
,但它只是解析了该值并存储了“Debug”。我们创建发布配置文件来完成所有这些。然后,我们使用该发布配置文件进行构建。我知道有一个传递SQLCMD值的选项,但我不确定它是什么。我们通常先构建,然后发布w/SQLPackage来设置值。