VS 2013 数据库项目:基于构建配置运行的部署后脚本
Posted
技术标签:
【中文标题】VS 2013 数据库项目:基于构建配置运行的部署后脚本【英文标题】:VS 2013 Database Project: Post-Deployment scripts to run based off of build configuration 【发布时间】:2014-08-27 15:31:17 【问题描述】:在 Visual Studio 2012/2013 中基于 SSDT 的数据库项目中,是否有可用的方法/机制根据构建配置运行一组不同的部署后脚本?我想通过使用“测试”配置进行部署来预先填充我的数据以进行测试/持续集成,但自然不想在其他环境中这样做。不过,我似乎找不到有条件地将部署后脚本链接到构建配置的方法,这对我来说真的很奇怪。
【问题讨论】:
【参考方案1】:您可以通过编辑 MSBuild 使用的 .sqlproj 文件来完成此操作。然后,当您在“测试”配置中构建时,您将获得与在“发布”模式下构建时不同的 dacpac 内容。例如:
创建项目并添加 PostDeployment 脚本 卸载项目并编辑 .sqlproj 文件 将包含 PostDeploy 脚本的 ItemGroup 更改为如下所示:<ItemGroup Condition=" '$(Configuration)' == 'Release' ">
<PostDeploy Include="Debug.PostDeployment1.sql" />
</ItemGroup>
【讨论】:
【参考方案2】:您也可以使用 SQLCMD 变量来执行类似的操作。如果 value == "Test",则运行一组值。如果没有,请运行其他内容。我在这里写了一篇博客:
http://schottsql.blogspot.com/2013/05/trick-to-not-run-prepost-sql-on-publish.html
它不是在构建时完成的,并且总是以这种方式包含脚本,但如果这不是问题,它为您提供了一种轻松编写代码以轻松在各种环境中运行的方法。
【讨论】:
嗯...如何将 SQLCMD 值设置为构建配置?我尝试使用$(Configuration)
,但它只是解析了该值并存储了“调试”。
我们创建发布配置文件来完成所有这些工作。然后我们使用该发布配置文件进行构建。我知道有一个传递 SQLCMD 值的选项,但不确定它是什么。我们更经常先构建,然后使用 SQLPackage 发布以设置值。以上是关于VS 2013 数据库项目:基于构建配置运行的部署后脚本的主要内容,如果未能解决你的问题,请参考以下文章