4

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

回答

3

您也可以使用SQLCMD变量来做类似的事情。如果值==“Test”,则运行一组值。如果没有,运行其他的东西。我的博客上讲述,在这里:

http://schottsql.blogspot.com/2013/05/trick-to-not-run-prepost-sql-on-publish.html

它不是构建完成,该脚本始终包含这种方式,但如果这不是一个问题,它给你一个方法可以轻松地编写代码来在各种环境中运行容易。

+0

嗯...你如何将SQLCMD值设置为构建配置?我尝试使用'$(Configuration)',但它只是解析该值并存储“调试”。 – 2014-08-29 12:38:07

+0

我们创建发布配置文件来完成所有这些。然后我们使用该发布配置文件构建。我知道有一个选项可以通过SQLCMD值,但不知道它是什么在我头上。我们更经常地先构建,然后发布w/SQLPackage来设置值。 – 2014-08-29 14:04:06

+0

我明白了!谢谢。 – 2014-08-29 15:30:34

7

您可以通过编辑MSBuild使用的.sqlproj文件来完成此操作。然后,当您构建“测试”配置时,您可以在“发布”模式下构建不同的dacpac内容。例如:

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

<ItemGroup Condition=" '$(Configuration)' == 'Release' "> <PostDeploy Include="Debug.PostDeployment1.sql" /> </ItemGroup>

  • Build in Debug configuration and unpack the dacpac:no postdeploy.sql fil e将包含在内
  • 构建测试配置并解压dacpac:postdeploy.sql文件将在那里。
+0

blech,这是丑陋的...但它看起来像它会工作。 – 2014-08-27 17:56:16

相关问题