2017-07-17 32 views
0

我试图在包含MVC项目和SQL Server数据库项目的解决方案的Visual Studio Team Services中设置CI/CD。团队服务构建定义在已发布的工件中缺少dacpacs

使用ASP.NET(PREVIEW)模板我的解决方案中的两个项目都生成了,但是我发现我的SQL Server数据库项目中的dacpac没有作为工件发布,并且不在C:\agent\_work\11\a文件夹中。

我需要为解决方案中的每个项目创建两个构建定义吗?如果是的话,应该如何配置参数Path to solution or packages.config

或者,我只需要将Copy Files任务添加到我的构建定义中,以将dacpacs传输到C:\agent\_work\11\a文件夹中?

+0

您是否用我们的解决方案解决了这个问题? –

回答

2

一般来说,我提供了一个MSBuild参数/p:OutDir=$(Build.ArtifactStagingDirectory)到MSBuild或Visual Studio Build步骤。这会强制将所有输出放入工件暂存文件夹中。

如果你这样做,你的DACPAC文件仍然不是神器暂存文件夹,那么你可能会建立错误的东西,或者构建一个解决方案配置/平台,有你的设置为不建SSDT项目。

+0

这是默认的MSBuild参数'/ p:DeployOnBuild = true/p:WebPublishMethod = Package/p:PackageAsSingleFile = true/p:SkipInvalidConfigurations = true/p:PackageLocation =“$(build.artifactstagingdirectory)\\”工件中有5个文件。那和你对OutDir属性的建议有什么区别? – mheptinstall

+0

@mheptinstall此参数用于发布web项目,它不会发布数据库项目,因此您需要添加Copy Files任务以将dacpacs文件复制到artifact文件夹。 –

+0

Daniel Mann的回答为我工作。只向Visual Studio生成任务添加/p:OutDir=$(Build.ArtifactStagingDirectory)会导致将DACPAC文件发布到放置文件夹。 – Mcanic

0

在解决方案中有Web和数据库项目,您需要将数据库项目输出复制到带有额外任务的工件文件夹。 (例如复制文件任务)

参数:/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\\"用于发布web项目,它不会发布数据库项目。

+0

按我的建议提供额外的'/ p:OutDir = $(Build.ArtifactStagingDirectory)'参数应该可以完成同样的事情,而不需要额外的复制文件任务。我经常这样做。 –

+0

@DanielMann是的,但是web项目也输出到工件文件夹,这些文件应该打包在zip文件中。 –

相关问题