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

Merge multiple web projects into a single output zip package

我正在使用 Visual Studio 在线并通过构建持续集成设置来工作。我的场景要求将多个 Web 项目构建到单个 Azure 应用服务部署中。问题是 "out of the box" 当您创建新构建时,Visual Studio 构建任务似乎为解决方案中的每个项目创建一个单独的 zip 文件,然后 Azure App Service Deploy 任务抛出错误提示匹配模式的文件不止一个,即*.zip。

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

我想在 VSO 中实现的场景是否可行,也许使用一组不同的命令代码?

听起来您需要一个 PowerShell 脚本或一些任务来在发布工件之前操作文件和文件夹。

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

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