bis*_*314 9 visual-studio azure-pipelines-build-task
在 Visual Studio 中,当我们发布到一个文件夹时,该文件夹包含我们需要部署的内容。
在 Azure Pipeline 中,Build Solution 任务会生成一堆(对我们来说)不必要的文件和一个 zip 文件(很好!)。zip 包含我们需要的文件,但隐藏在一个疯狂的深文件夹路径中:
\Content\D_C\a\1\s\src\MyProject\obj\Release\Package\PackageTmp\our-files.dll
Run Code Online (Sandbox Code Playgroud)
我们更喜欢的是:
\our-files.dll
Run Code Online (Sandbox Code Playgroud)
它还修改 web.config 中的 connectionStrings 以支持它附带的部署脚本。我们不需要那个脚本,而且修改很麻烦(我们通过添加<AutoParameterizationWebConfigConnectionStrings>false</...>到 .csproj 文件来禁用它- 哎呀!)`。
我们尝试在 Build Solution 步骤中对参数大惊小怪:
/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\\"
Run Code Online (Sandbox Code Playgroud)
更改DeployOnBuild为false导致 $(build.artifactsstagingdirectory) 为空(导致下一步不部署任何内容)
更改WebPublishMethod为FileSystem没有区别(尝试查找有关允许值的文档!)
更改PackageAsSingleFile为false做人们所期望的 - 没有 zip,但内容仍然隐藏在那个深层文件夹结构中。
我们的下游脚本可以打开清单文件,将深度路径 xpath 导出到 zip 中(路径是否总是以开头d_C?),解压缩并从那里获取内容 - 但这是多么痛苦和多么不必要。
有没有办法只发布一个很好的干净构建 - 一个 zip 的内容可以直接解压缩到与 Visual Studio 中的纯简发布相同的文件?
Jon*_*nes 12
在 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)"
Run Code Online (Sandbox Code Playgroud)
关键是 /p:OutDir="$(build.artifactstagingdirectory)" 解决了目录问题,/p:UseWPP_CopyWebApplication=true 删除了 web.config.release 和 web.config.debug
然后将发布构建工件步骤“发布路径”更新为
$(build.artifactstagingdirectory)\_PublishedWebsites
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6021 次 |
| 最近记录: |