使用转换后的发布配置部署本地 Web 应用程序

Deploy on premise web app with transformed release configs

我们正在设置发布定义以最终完成我们在 VSTS 中的最后一部分 CD/CI 设置,并且 运行 遇到无法转换配置的问题.

目前我们正在遵循 Scott Hanselman's 方法通过 secrets.config 将连接字符串和机密信息排除在我们的 web.config 之外,因为我们不希望任何此类信息提交给源代码管理.如果这种情况有更好的做法,我们愿意进行切换,但目前不确定这将如何与 VSTS 集成 CD/CI。

我们尝试使用 XDT Transform Extension 将我们的 web.base.config 转换为 web.config 以删除文件和配置源引用,但它似乎没有转换。

我们还使用了带有 XML 转换和 XML 变量替换的 IIS Web 应用程序部署任务,但转换不起作用,因为 web.base.config 不存在在文物中。我不确定为什么在构建时没有引入它。

我们想知道任何或所有这些不同步骤的最佳实践是什么,以及我们如何在不将配置设置提交到源代码管理的情况下成功完成内部部署。我们还想知道如何为控制台应用程序执行此方法。

由于 web.base.config 文件没有上传到源代码管理并且没有在构建代理机器中,所以你不能使用 XDT 转换或 XML 转换 task/feature.

您可以将数据存储在 secret variable 或 Azure Key Vault 中,link 以发布定义。

例如:

  1. 在发布定义中添加一个新变量(单击锁定图标)或 linkAzure key Vault(例如 connectionStrings)
  2. 方法 1:检查 XML 变量替换选项(构建或发布定义中定义的变量将与 appSettings、applicationSettings 和任何配置文件和 parameters.xml 的 connectionStrings 部分。配置转换后变量替换为 运行。),然后变量值将被替换为配置文件
  3. 方式 2:如果 Web 应用发布为 Web 部署包:覆盖 Web 部署参数(SetParameters.xml),方法是在发布任务中的覆盖参数输入中指定值. (可以在项目中添加parameters.xml文件,生成web部署包时会在SetParameters.xml文件中添加相关参数)Configuring Parameters for Web Package Deployment
  4. 方式三:使用Replace Token task将文件中的token(如#{mypassword}#)替换为变量值(mypassword