2016-05-27 49 views
0

我有3个数据项目SSDT项目中,项目A,项目AB和项目ABC其中: -SSDT更改目标平台问题

  • 项目AB有一个数据库参考投射
  • 项目ABC有项目AB和项目A的数据库引用

我正在部署数据库项目ABC本地到2014年,然后(开发之后)将其部署到Azure。

一切都好,直到我尝试更改目标平台。大多数情况下,我可以通过仅更改目标平台进行ABC部署来部署Azure,但有时候我还需要更改Project A和/或Project AB的目标平台,以便为其生成脚本2014数据库。

这样做,当我试图将其改回为“微软Azure SQL数据库V12”当我试图生成失败,并在数据工具操作的消息的脚本后: -

一个项目,指定作为目标平台 的SQL Server 2014不能被发布到微软的Azure SQL数据库V12

不过,我肯定都设置为微软Azure SQL数据库V12的目标平台。我也可以在项目AB上看到对项目A的引用有警告图标enter image description here

如果我试图删除数据库参考,并重新添加引用(同一个数据库项目的参考),成功后加入我得到一个对话框参考...

enter image description here

什么输出目录?!我试过删除bin和obj文件夹,但没有成功。

我发现的唯一工作是擦除所有东西(不会还原未提交的更改),从源代码控制中拉出所有内容后,我可以再次发布并生成脚本。所以我必须错过一些东西。

有没有人遇到这些问题,并找到一个更简单的方法来解决它们?

+0

看起来像一个恼人的bug。如果你想用FileMon找出这个虚构的输出目录 –

+0

你是如何生成你的部署脚本的? –

+0

我使用发布功能.publish.xml文件 – Mick

回答

0

我已经找到了这个问题的解决办法是,当你编译所有的目标平台设置为相同的目标平台的项目,在我的情况Azure的SQL数据库V12始终保证。如果您希望部署到本地SQL Server数据库,请确保所有引用的项目都已针对相同平台成功构建(即对于我而言,Azure SQL DB V12),将您部署到SQL Server 2014的目标平台(或者您本地数据库的任何版本)切换为部署,然后在编译任何新更改之前将其切换回来。

我发现你可以用问题,最终如事拒绝部署或除非你设置为同一个平台上所有目标平台上编译没有部署引用的数据库项目的架构更改。例如,如果项目ABC的目标平台与项目A不同,您可以在项目A中进行更改,成功编译和部署ABC,但不会部署项目A中所做的任何更改。

编辑/ UPDATE:我发现,从2017年VS这项工作,如果你要部署到SQL Server 2017年左右就不再需要,可以部署一个项目瞄准蔚蓝(又名V14.0。*)到本地SQL Server 2017实例,而不存在此问题中描述的问题。我还没有尝试部署到其他版本的SQL Server,所以我不知道它是否是对SQL Server的更改或对Visual Studio的更改,无论如何它现在可以工作而不需要任何技巧。

+0

有没有人找到一种方法来做到这一点,而不是硬编码项目文件作为一个msbuild参数? –

+0

@JasonMeckley我已经编辑了我的答案,并对此问题进行了更新。您可能会发现升级可以解决您的问题,而无需修改构建脚本或项目文件 – Mick

1

我会如此将开发和发布分成两个独立的东西。

在ssdt中针对其中一个或另一个进行开发,然后使用sqlpackage使用dacpac进行部署,我在2016和azure v12上执行此操作我认为旧版本可能需要您设置AllowIncompatibleVersions。

如果您不需要更改版本,那么您将不会遇到这些问题,也不必重新生成所有的引用。

埃德