我正在为Web应用程序设置持续部署,但我在配置转换方面遇到了麻烦。构建和发布都可以在没有配置转换的情况下工作,但我想添加一个配置转换步骤,以确保Web配置中有正确的连接字符串,存储帐户等。
我在VSTS中使用配置转换任务。在构建过程中构建的工件是一个zip文件。我正在提取这些文件,它提供了一个非常深的文件结构。如果我硬编码文件结构,配置转换有效,但我担心这可能会改变,所以我想概括它。如果我执行$(mypath)/ ** / Web.config它没有错误并且日志显示它正在进行转换,但是一旦完成,我查看Azure中的文件并且可以看到转换实际上并不是完成或保存。
我对此的要求是我不能使用xslt转换或XML转换(web.environment.config),因为我们希望将重要值保留在源代码控制和VSTS之外。我们也在NLog.config上进行配置转换,并且这些转换的设置方式相同,并且看到相同的问题。任何有关获得这种更通用的工作路径的帮助,或者以不同的方式解决这个问题都将非常感激。
其他可能有用的信息:
构建解决方案步骤中的MSBuild参数:
/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\\"
路径结构 $(My.Paths.InstallDirectory)\内容\ d_C \一个\ 1 \ S \ APPS \项目名\项目名\ OBJ \发布\包\ PackageTmp \ Web.config中
答案 0 :(得分:2)
文件转换&变量替换 Azure App Service部署任务中的选项,因此您可以使用 XML变量替换或J SON变量替换来执行此操作不解压缩包文件(zip文件):
例如:
DefaultConnection
;值:Data source=xxx…
),单击锁定图标将变量类型更改为机密。XML variable substitution
任务Azure App Service Deploy
选项
相关文章:XML variable substitution
另一种方法是您可以通过Token replace task更改 Web部署参数文件(SetParameters.xml)中的值(您还可以在Azure App Service Deploy
任务中指定不同的文件per to Release of Environment,例如SetParameters.Dev.xml,SetParameters.QA.xml)
关于Configuring Parameters for web package deployment
的文章 BTW:您可以通过指定/P:PackageTempRootDir=""
msbuild参数