使用 VSTS 进行持续部署,配置转换不起作用

Using VSTS for Continuous Deployment, config transform not working

我正在为 Web 应用程序设置持续部署,但在进行配置转换时遇到问题。构建和发布都无需配置转换即可工作,但我想添加一个配置转换步骤以确保正确的连接字符串、存储帐户等在 Web 配置中。

我正在 VSTS 中使用配置转换任务。在构建过程中构建的工件是一个 zip 文件。然后我提取这些文件,它提供了一个非常深的文件结构。如果我对文件结构进行硬编码,则配置转换会起作用,但我担心这可能会改变,所以我想概括一下。如果我执行 $(mypath)/**/Web.config 它不会出错并且日志显示它正在进行转换,但是一旦它完成,我查看 Azure 中的文件并且可以看到转换不是'没有实际完成或保存。

我对此的要求是我不能使用 xslt 转换或 XML 转换 (web.environment.config),因为我们希望将重要的值保留在源代码控制和 VSTS 中。我们还在 NLog.config 上进行配置转换,这些转换的设置方式相同,并且遇到相同的问题。任何有关获得此更通用的工作路径或解决此问题的不同方法的帮助,我们将不胜感激。

其他可能有用的信息:

生成解决方案步骤中的 MSBuild 参数:

<code>/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\"

路径结构 $(My.Paths.InstallDirectory)\Content\d_C\a\s\Apps\ProjectName\ProjectName\obj\Release\Package\PackageTmp\Web.config

Azure App Service Deploy 任务中有File Transforms & Variable Substituion选项,因此您可以使用XML 变量替换 或 JSON 变量替换 无需解压包文件 (zip 文件):

例如:

  1. 在Release定义中添加一个新变量(作用域:select一个环境),例如:名称:DefaultConnection;值:Data source=xxx…),单击锁定图标将变量类型更改为机密。
  2. 检查 Azure App Service Deploy 任务中的 XML variable substitution 选项
  3. 然后在部署期间,如果 appSettings、applicationSettings 和 connectionStrings 部分中的键或名称条目与变量名称
  4. 匹配,则任何配置和 parameters.xml 文件都将使用该变量值更新

相关文章:XML variable substitution

另一种方法是,您可以通过 Token replace task 更改 web 部署参数文件 (SetParameters.xml) 中的值(您也可以指定不同的文件in Azure App Service Deploy task per to Environment of release, such as SetParameters.Dev.xml, SetParameters.QA.xml)

一篇关于 Configuring Parameters for web package deployment

的文章

顺便说一句:您可以通过指定 /P:PackageTempRootDir="" msbuild 参数

从 web 部署包中删除源结构