我们有多个客户端,他们的服务器上运行着不同的数据库版本。部分客户端使用 SQL Server 2008,部分客户端使用 SQL Server 2012,部分客户端使用 SQL Server 2014。
我的 Visual Studio 2015 解决方案中有一个 SSDT 项目。
对于生产部署,首先我们向客户端询问 SQL Server 版本,然后根据该版本,我们向客户端提供合适的 .dacpac
文件。
每次构建 SSDT 项目时,它只会在所选“目标平台”版本的输出文件夹中创建一个 .dacpac
文件(SSDT 项目 > 属性 > 项目设置 > 目标平台)
如果选择 SQL Server 2008 作为目标平台 - 将为 SQL Server 2008 创建单个
.dacpac
文件如果选择 SQL Server 2012 作为目标平台 - 将为 SQL Server 2012 创建单个
.dacpac
文件
有没有办法在单个构建中为所有版本创建多个 .dacpac
文件,而无需手动更改“目标平台”设置?
通过使用前/后构建事件或使用某些 Exe 文件?
谢谢。
最佳答案
我也遇到过类似的事情,我需要一个项目在多个版本上工作,我的管理方式是将其设置为您支持的最低版本(我只需要 2007r2 和 2012,所以这并不太难) 。然后,当我部署时,我将“AllowInknownPlatform”设置为 true。
另一种方法是将 dacpac 作为 zip 文件打开或使用 System.Packaging .net api 并更改 model.xml 中的版本。
我还在博客中介绍了当您无法控制要部署到的数据库时您可能已经知道的一些困难:
如果您决定更改 dacpac 内的版本,请告诉我,我将向您展示如何操作,但这确实意味着您跳过了不理想的构建阶段。
编辑
关于sql-server - 在单个构建中创建所有 SQL Server 版本的 dacpac 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39624262/