【发布时间】: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