gpt4 book ai didi

visual-studio - Azure DevOps 构建任务 : create a zip with contents identical to Visual Studio Publish

转载 作者:行者123 更新时间:2023-12-01 21:16:20 24 4
gpt4 key购买 nike

在 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 以支持它附带的部署脚本。我们不需要该脚本,而且修改很麻烦(我们通过将 <AutoParameterizationWebConfigConnectionStrings>false</...> 添加到 .csproj 文件来禁用它 - 哎呀!)。

我们尝试在构建解决方案步骤中使用参数:

/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\\"
  • 更改DeployOnBuildfalse导致 $(build.artifactsstagingdirectory) 为空(导致下一步不部署任何内容)

  • 更改WebPublishMethodFileSystem没有什么区别(尝试查找有关允许值的文档!)

  • 更改PackageAsSingleFilefalse做了人们所期望的事情 - 没有压缩,但内容仍然隐藏在那个深层文件夹结构中。

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

有没有一种方法可以发布一个干净的构建 - 一个 zip 内容,可以直接解压到与 Visual Studio 中的普通简发布相同的文件?

最佳答案

在 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

关于visual-studio - Azure DevOps 构建任务 : create a zip with contents identical to Visual Studio Publish,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55925792/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com