2

我有 Microsoft TFS 构建过程来将 web 项目部署到 azure web 角色,这每天都会以自动化的方式发生。我已关注 Azure 文章https://azure.microsoft.com/en-in/documentation/articles/cloud-services-dotnet-continuous-delivery/

正如上面的文章所建议的,我在构建过程中有以下 MSBuild 参数

/t:Publish /p:PublishDir=C:\MSCD\

当我将数据库项目添加到我的项目解决方案中时,构建一直失败。收到错误信息

没有为“SqlPublishTask”任务提供所需参数“SqlPublishProfilePath”的值

当我发布我的网络项目时,我不希望发布数据库项目。如何将 DACPAC 文件放到drop文件夹中?所以我可以使用 powershell 在 azure 中更新我的数据库。

我正在使用 TFS 2012 On-Premise。有人可以就如何解决这个问题提出建议吗?

4

2 回答 2

2

您需要创建主子构建定义,并在主构建定义中配置解决方案,并在配置管理器中禁用构建和部署。在子构建中单独配置数据库项目。

创建 Master 和 child 构建定义,以便它们共享共同的 drop 。

于 2015-07-20T09:17:17.593 回答
2

@Siva palla 的回答为我解决了同样的问题。以下是我们为使其正常工作所做的一整套更改。

Visual Studio 中的更改

最初我使用的是一个名为“Deployment”的单一配置,它被设置为部署我们的 WinForms 项目和我们的 SQL 项目(VisionShellWin 是 WinForms 项目,两个 Vision.SQLMigration 项目是 SSDT 项目)所以下面的所有内容都是基于对部署。对于大多数人来说,您将使用 Release 而不是 Deployment,以下所有内容应该仍然可以正常工作,只需将 Release 替换为 Deployment:

在此处输入图像描述

为了将该单一配置一分为二,我创建了一个新配置:

在此处输入图像描述

我将新部署设置为从旧部署配置复制其设置,而不是为每个项目创建新配置(现有项目级别的部署很好):

在此处输入图像描述

在那个新的部署中,我取消了构建和部署数据库项目的复选框:

SSDT 项目的配置未勾选 Build

然后我再次做了完全相同的事情来创建一个特定于数据库的部署:

在此处输入图像描述

在那一个中​​,我取消了除数据库文件之外的所有内容:

在此处输入图像描述

这就是 Visual Studio 所需的一切,所以我提交了所有这些并将其同步回 DevOps。

Azure DevOps 的变化

在 DevOps 中,我克隆了现有的 Visual Studio 构建阶段(称为“构建 Winforms 解决方案”)并将克隆重命名为构建数据库:

在此处输入图像描述

我在“变量”选项卡中添加了两个新的构建变量,名为 ClickOnceBuildStageConfiguration 和 DatabasesBuildStageConfiguration,它们的值设置为我们刚刚在 VS 中创建的新配置的名称:

在此处输入图像描述

然后我更改了 WinForms 构建阶段以使用新的 ClickOnceBuildStageConfiguration 变量 - 请注意,我们仍然有/T:"VisionShellWin" /target:PublishClickOnce 集所需的 MSBuild 参数:

在此处输入图像描述

以及使用数据库变量的新构建数据库阶段 - 请注意,我们没有任何 MSBuild 参数: 在此处输入图像描述

最后,除了我已经将 ClickOnce 应用程序文件复制到drop工件中的复制阶段:

在此处输入图像描述

我还添加了一个 Copy Files 阶段(称为“Copy Dacpacs”)以将 DacPac 也复制到 drop 中:

在此处输入图像描述

一旦你完成了所有这些,你应该最终得到一个有效的构建和一个包含 ClickOnce 文件和 DacPac 的工件

在此处输入图像描述

于 2019-02-24T12:21:28.713 回答