简化了 SSDT 数据库项目到 localdb 的部署

Streamlined deploy of SSDT Database Project to localdb

如果您将 VS 2015 中的 SSDT 数据库项目设置为启动项目,它会在您按下 F5 时同时执行构建和部署

========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ========== ========== Deploy: 1 succeeded, 0 failed, 0 skipped ==========

这与 "Publish..." 命令不同,因为它不会引导您完成发布对话框。它只是自动部署到 localdb 实例(通过项目的调试配置指向。

我经常需要将数据库部署到 localdb,这样我就可以 运行 代码生成工具针对它,而不是 运行 整个解决方案(有其他应用程序,即我不会想 运行 通过 F5).

所以我想做的是确定是否有一个项目级别的推荐,我可以添加到我的工具栏,执行此自动无对话框部署到 localdb,而不是 F5 的启动调试命令。我正在查看“添加命令”对话框(右键单击工具栏->“自定义”),还查看了 SSDT。* 来自键盘自定义选项的命令。

有谁知道是否有专门用于数据库项目 Build+Deploy 或 Deploy 的命令会自动执行? (同样,"Publish..." 命令不是我要找的,因为它不会像上面那样自动部署)

我尝试过不同的方法来做到这一点,我摇摆不定的两种方法是:

  1. 有一个 powershell 脚本可以调用 sqlpackage.exe 来部署 dacpac。正常构建项目 (ctrl+shift + b) 然后 alt tab 到 powershell 和 运行 最后一个命令(部署脚本)

  2. 使用 StudioShell (https://studioshell.codeplex.com/) 创建一个 visual studio 命令进行构建然后部署,然后您可以映射

(2) 更接近你想要的,但我个人更喜欢 (1),因为它更简单。使用 (1) 对我的好处是:

  • 该脚本与我在 CI、QA、Prod 等中用于部署 dacpac 的脚本相同,所以这意味着我对其进行了很多(很多)测试
  • 我很容易看到任何错误和警告,并且可以密切关注何时一次又一次地重新部署对象,这样我就可以解决问题,而不是没有注意到并且部署时间越来越长

我经常看到类似的问题,所以我想我会就此写下我的想法:https://the.agilesql.club/blog/Ed-Elliott/Visual-Studio-SSDT-Publish-My-Personal-Best-Practices

无论你做什么(这个或其他什么)跟进你的经历,我(至少!)都会觉得很有趣!

编辑

我找到了两个替代方案:

  1. 右击解决方案,select"Startup Project","Multiple startup projects",将数据库项目设为其中之一

  2. 右键单击解决方案 select "Project Dependencies",并使数据库项目依赖于将要构建的其他项目之一。