web.config 通过 TFS 2015 发布管理更改

web.config changes via TFS 2015 Release Management

过去,我在手动部署代码时使用 web.config 转换来设置环境特定的设置值和属性。我正在从环境特定的手动构建过渡到通过发布管理部署到多个环境的单个 TFS 2015 构建。 web.config 中配置的环境特定应用程序设置值已标记化。 This method 本质上是在构建过程中将标记插入到设置值中。部署后,令牌将替换为匹配的发布定义配置值。

但是这种方法不足以设置非设置的属性。这些转换的示例包括:

<httpCookies requireSSL="true" xdt:Transform="Insert" />
<compilation xdt:Transform="RemoveAttributes(debug)" />
<httpRuntime xdt:Transform="RemoveAttributes(executionTimeout,maxRequestLength,useFullyQualifiedRedirectUrl,minFreeThreads,minLocalRequestFreeThreads,appRequestQueueLimit,enableVersionHeader)"/>
<httpRuntime enableVersionHeader="false" maxRequestLength="12288" xdt:Transform="SetAttributes"/>
<customErrors mode="On" xdt:Transform="SetAttributes"/>

在发布期间更新这些属性的最佳方式是什么?

Web Deploy's parameters.xml method 和转换都可以与发布管理一起使用。转换将从构建中触发,替换由发布创建的令牌的过程将由发布管理触发。

要在构建期间触发转换,您可以通过以下两种方式之一执行此操作:

  1. 添加以下 MSBuild 参数以强制在构建过程中进行转换

    /p:UseWPP_CopyWebApplication=true /p:PipelineDependsOnBuild=false

  2. 使用 MSDeploy Package 选项创建发布配置文件,然后使用以下 MSBuild 参数在 Build 中触发打包:

    /p:DeployOnBuild=true /p:PublishProfile=[nameOfProfile]

以上任何一种方法都会导致正常的 Web.config XDT 变为 运行。如果您需要转换其他 XML 个文件,您需要先安装 SlowCheetah.

令牌替换和参数

现在您已经有了一个带有 XDT 运行 的构建工件,您可以使用 Release Management 中的 token replacement and the WinRM tasks。这些将从构建中获取 Web 部署包并在部署之前执行 SetParameters 命令。诀窍是首先获取 SetParameters.xml 文件和 运行 一个令牌替换,首先换出 Release 环境变量。

用户 Sumo 给出了正确的答案,但我想记录一些与 what 而不是 how 相关的评论.

恕我直言,有不同类别的设置需要考虑,让我们举例说明。数据库连接字符串在每个环境中都会发生变化,同时需要为所有测试和生产环境打开 SSL。 从这个角度来看,您应该尽早应用设置,传统上是在构建时应用并调用 Debug/Release 构建;和最后一刻的设置,取决于环境,直到运行时设置,如功能切换。

所以在我看来,您可以使用一个工具或多个工具,但重要的是您要相应地正确分类您的设置。