2

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

目前,我们正在遵循Scott Hanselman 的方法,即通过 secrets.config 将连接字符串和秘密保留在我们的 web.config 之外,因为我们不希望将任何这些信息提交给源代码控制。如果这种情况有更好的实践,我们愿意切换,但目前不确定这将如何与 VSTS CD/CI 集成。

我们尝试使用XDT 转换扩展将我们的 web.base.config 转换为 web.config 以删除文件和 configsource 引用,但它似乎没有进行转换。

在此处输入图像描述

我们还使用了带有 XML 转换和 XML 变量替换的 IIS Web App Deploy 任务,但转换不起作用,因为工件中不存在 web.base.config。我不确定为什么没有在构建时加入。

在此处输入图像描述

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

4

1 回答 1

2

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

您可以将数据存储在机密变量或 Azure Key Vault 中,并将其链接到发布定义。

例如:

  1. 添加新变量(单击锁定图标)或在发布定义中链接 Azure 密钥库(例如 connectionStrings)
  2. 方式 1:检查 XML 变量替换选项(在构建或发布定义中定义的变量将与任何配置文件和 parameters.xml 的 appSettings、applicationSettings 和 connectionStrings 部分中的“键”或“名称”条目匹配。变量替换在配置转换后运行。),那么变量值将被替换为配置文件
  3. 方式 2:如果 Web 应用程序作为 Web 部署包发布:通过在发布任务中的 Override Parameters 输入中指定值来覆盖 Web 部署参数 ( SetParameters.xml )。(可以在工程中添加parameters.xml文件,生成web部署包时会在SetParameters.xml文件中添加相关参数)配置Web包部署参数
  4. 方式3:使用替换令牌任务将文件中的令牌(例如#{mypassword}#)替换为变量值(mypassword
于 2017-11-29T06:01:37.023 回答