数据库项目(DACPAC)问题 - 持续交付

问题描述 投票:2回答: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”赋值

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

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

tfs msbuild tfsbuild build-process-template
2个回答
2
投票

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

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


2
投票

@Siva palla's answer为我解决了这个完全相同的问题。以下是我们为实现这一目标而进行的一整套更改。

Visual Studio中的更改

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

enter image description here

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

enter image description here

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

enter image description here

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

Configuration with SSDT projects not ticked to Build

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

enter image description here

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

enter image description here

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

Azure DevOps中的更改

在DevOps中,我克隆了我现有的Visual Studio Build阶段(称为“Build Winforms solution”)并将克隆重命名为Build Databases:

enter image description here

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

enter image description here

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

enter image description here

新的Build Databases阶段使用数据库变量 - 注意我们没有任何MSBuild参数:enter image description here

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

enter image description here

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

enter image description here

完成所有这些后,您应该得到一个有效的构建和一个包含ClickOnce文件和DacPacs的工件。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.