【问题标题】:Azure DevOps Build Task: create a zip with contents identical to Visual Studio PublishAzure DevOps 构建任务:创建内容与 Visual Studio Publish 相同的 zip
【发布时间】:2019-04-30 17:11:26
【问题描述】:

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

在 Azure Pipeline 中,构建解决方案任务会生成一堆(对我们而言)不必要的文件以及一个 zip 文件(很好!)。 zip 包含我们需要的文件,但隐藏在一个疯狂的深文件夹路径中:

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

我们更喜欢的是:

\our-files.dll

它还修改了 web.config 中的 connectionStrings 以支持它附带的部署脚本。我们不需要那个脚本,而且修改很麻烦(我们通过在 .csproj 文件中添加<AutoParameterizationWebConfigConnectionStrings>false</...> 来禁用它 - 糟糕!)`。

我们尝试在构建解决方案步骤中大惊小怪:

/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\\"
  • DeployOnBuild 更改为 false 导致 $(build.artifactsstagingdirectory) 为空(导致下一步什么都不部署)

  • WebPublishMethod 更改为FileSystem 没有任何区别(尝试查找有关允许值的文档!)

  • PackageAsSingleFile 更改为 false 符合人们的预期 - 没有 zip,但内容仍然隐藏在该深层文件夹结构中。

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

有没有办法发布一个漂亮的干净构建 - 一个包含内容的 zip 直接解压缩到与 Visual Studio 中的纯 jane Publish 相同的文件?

【问题讨论】:

    标签: visual-studio azure-pipelines-build-task


    【解决方案1】:

    在 Visual Studio 构建步骤中,将“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

    然后将“发布构建工件”步骤“发布路径”更新为

    $(build.artifactstagingdirectory)\_PublishedWebsites
    

    【讨论】:

    • 谢谢您 - 稍作调整,现在可以解决问题了。虽然它不压缩(不是要求 - 只是很高兴拥有)。你想好怎么做了吗?
    • Np 你可以放入一个压缩步骤来解决好问题。
    • 我似乎无法让它工作,我的步骤在发布工件上失败,出现错误“##[error]Publishing build artifacts failed with an error: Not found PathtoPublish: D:\a \1\a_PublishedWebsites” 是否需要在构建步骤中指定“_PublishedWebsites”?
    • 太棒了,很高兴我找到了这个。我整天都在为此头疼。微软需要在此任务的文档中包含一些此类信息,因为这似乎是许多人试图解决的一个非常常见的问题。
    猜你喜欢
    • 2018-08-21
    • 2019-04-14
    • 2020-06-25
    • 2021-05-05
    • 2020-05-05
    • 1970-01-01
    • 2020-09-11
    • 2018-05-24
    • 1970-01-01
    相关资源
    最近更新 更多