将多个Web项目合并到一个输出zip包中

时间:2018-09-18 01:29:49

标签: msbuild azure-devops azure-app-service-envrmnt

我正在使用Visual Studio Online,并正在构建一个持续集成设置。我遇到的情况要求将多个Web项目构建到单个Azure App Service部署中。问题在于,当您创建新的生成时,“开箱即用”,Visual Studio生成任务似乎为解决方案中的每个项目创建了一个单独的zip文件,然后Azure App Service Deploy任务引发错误,指出存在多个与模式匹配的文件,即* .zip。

我想做的是将所有这些项目构建到一个位置,将各个项目合并在一起,然后Azure App Service Deploy仅具有一个要推送的zip文件,我知道它可以做到精细。我对Visual Studio Build任务的MSBuild参数为/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\\"。我尝试删除PackageAsSingleFile属性,但仍然创建了zip文件。

我想在VSO中实现这种情况吗,也许使用不同的命令代码集?

1 个答案:

答案 0 :(得分:1)

听起来像您需要PowerShell脚本或一些任务,以便在发布工件之前操纵文件和文件夹。

  1. Extract Files $(build.artifactstagingdirectory)\*.zip$(build.artifactstagingdirectory)\Merged
  2. Archive Files $(build.artifactstagingdirectory)\Merged$(build.artifactstagingdirectory)\Merged.zip
  3. 我们使用minimatch提取的
  4. Delete Files!/**/*.zip
  5. 更改您的Azure App服务部署以查找:$(System.DefaultWorkingDirectory)/**/Merged.zip

https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=vsts