过去我在手动部署代码以设置特定于环境的设置值和属性时使用web.config转换。我正在从特定于环境的手动构建过渡到通过发布管理部署到多个环境的单个TFS 2015 Build。 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"/>
在发布期间更新这些属性的最佳方法是什么?
答案 0 :(得分:6)
documentation和转换都可以与版本管理一起使用。将从Build触发转换,并且发布管理将触发替换发布创建的令牌的过程。
要在构建过程中触发转换,您可以采取以下两种方式之一:
添加以下MSBuild参数以强制在构建期间进行转换
/p:DeployOnBuild=true /p:PublishProfile=[nameOfProfile]
使用MSDeploy Package选项创建发布配置文件,然后使用以下MSBuild参数在Build中触发打包:
from bs4 import BeautifulSoup
h = """<li>
<a href="11111">
some text 111
<span class="some-class">
#11111
</span>
</a>
</li><li>
<a href="22222">
some text 222
<span class="some-class">
#22222
</span>
</a>
</li><li>
<a href="33333">
some text 333
<span class="some-class">
#33333
</span>
</a>"""
soup = BeautifulSoup(h)
上述任何一种方法都会导致正常的Web.config XDT运行。如果您需要转换其他XML文件,则需要先安装Web Deploy's parameters.xml method。
令牌替换和参数
现在您已经有一个运行XDT的构建工件,您可以使用SlowCheetah和发布管理中的token replacement。这些将从Build获取Web Deploy包并在部署之前执行SetParameters命令。诀窍是获取SetParameters.xml文件并首先在其上运行令牌替换,首先交换Release环境变量。
答案 1 :(得分:2)
用户 Sumo 给出了正确答案,但我想记录一些与 相关的评论,而非如何。
恕我直言,有不同类别的设置需要考虑,让我们举例说明。数据库连接字符串在每个环境中都会更改,同时应为所有测试和生产环境启用SSL。 从这个角度来看,您应该尽早应用设置,传统上在构建时应用,并称为调试/发布版本;和最后一分钟设置,环境相关,直到运行时设置,如功能切换。
因此,在我看来,您可以使用单个工具或多个工具,但重要的是要相应地对设置进行正确分类。