Azure DevOps构建任务:创建一个内容与Visual Studio Publish相同的zip

问题描述 投票:0回答:1

在Visual Studio中,当我们发布到文件夹时,该文件夹包含我们需要部署的内容。

在Azure Pipeline中,Build Solution任务会生成一堆(对我们来说)不必要的文件和一个zip文件(很好!)。 zip包含我们需要的文件,但隐藏在一个疯狂的深层文件夹路径中:

\Content\D_C\a\1\s\src\MyProject\obj\Release\Package\PackageTmp\our-files.dll

我们希望的是:

\our-files.dll

它还修改web.config中的connectionStrings以支持它附带的部署脚本。我们不需要那个脚本,并且修改是一种痛苦(我们通过将<AutoParameterizationWebConfigConnectionStrings>false</...>添加到.csproj文件来禁用它 - 哎!)`。

我们尝试使用Build Solution步骤中的参数:

/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\\"
  • DeployOnBuild更改为false导致$(build.artifactsstagingdirectory)为空(导致下一步没有部署)
  • WebPublishMethod更改为FileSystem没有任何区别(尝试查找允许值的文档!)
  • PackageAsSingleFile改为false做了人们所期望的 - 没有拉链,但内容仍然埋藏在那个深层文件夹结构中。

我们的下游脚本可以打开清单文件,xpath输出拉入zip的深层路径(路径总是以d_C开头吗?),解压缩并从那里抓取内容 - 但是多么痛苦和多么不必要。

有没有办法发布一个很好的干净的构建 - 一个内容的zip文件直接解压缩到与Visual Studio的普通jane相同的文件呢?

visual-studio azure-pipelines-build-task
1个回答
1
投票

在Visual Studio Build步骤中,将“MSBuild Arguments”更改为

/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\\"    /p:UseWPP_CopyWebApplication=true  /p:OutDir="$(build.artifactstagingdirectory)"  

关键是/p:OutDir="$(build.artifactstagingdirectory)“解决目录问题和/ p:UseWPP_CopyWebApplication = true删除web.config.release和web.config.debug

然后将Publish Build Artifacts步骤“发布路径”更新为

$(build.artifactstagingdirectory)\_PublishedWebsites
© www.soinside.com 2019 - 2024. All rights reserved.