2

我们正在尝试使用 Visual Studio 的发布管理工具(以前称为 InCycle)来自动化我们的构建/部署过程。

发布管理工具包括修改 web.config(或 app.config)中设置的工具。但是,在某些情况下,我希望能够做更多的事情。

例如,我们有 URL 重写器规则来自动将 HTTP 请求重定向到 HTTPS。但这(目前)在我们的开发工作站上不起作用。因此,web.config 的“基本”版本不包括重写器规则——它们是在构建/发布时通过 web.config 转换插入的。

但是发布管理“配置变量”机制不允许我指定多于一行作为替换值。
我意识到我可以删除换行符,并将 XML 片段压缩为单行文本。但我宁愿没有一个包含几千个字符长的行的 web.config。而且我怀疑我们的 IT 人员——毕竟他们可能还需要查看/编辑文件——会比我更强烈地感受到这一点;)

一般来说,web.config 转换机制有几种模式:您可以更改设置,也可以插入或替换(或删除)整个部分/XML 元素。虽然不再局限于 web.config 文件(开箱即用)很好,但新功能似乎受到了更多限制。

我错过了什么吗?有没有其他人发现这是一个问题?你做了什么来解决它?

4

2 回答 2

1

您仍然可以使用 xml 转换来实现您想要的。确保在构建期间应用了您的转换,并且构建输出文件夹中可用的生成的 web.config 文件将包含您的 URL 重写器规则。RM 将从那里提取它并应用任何其他正常的令牌替换。

这是一篇在这方面有帮助的帖子:http: //incyclesoftware.zendesk.com/entries/21487316-InRelease-with-Web-Deploy

如果您的发布路径中有多个阶段,例如第一阶段不应该有您的 URL 重写器部分,那么它可能会更难一些。您需要将转换应用为部署的一部分。为此需要使用多个组件/操作(xcopy 组件、xml 转换操作/组件)。

我现在找不到它,但我知道您可以调用一些命令行工具来实现 xml 转换作为部署的一部分。

于 2015-01-27T20:26:47.933 回答
1

抱歉我缺乏关于重写器规则的知识,但它们是否可以存在于 web.config 的基本版本中并被设置为它们不能有效地做任何事情并“重写”到 HTTP?

如果这是可能的,那么我这样做的方法是配置一个 web.config.release 文件,该文件将通过转换过程创建一个标记化的 web.config。但是,我没有使用 Web One Click Publish,而是使用 TFS 构建定义中的/p:UseWPP_CopyWebApplication=true /p:PipelineDependsOnBuild=false参数来应用转换。然后,这会导致 drop 文件夹中的构建完全不知道它将被部署到的任何环境。然后,您只需在 RM 中使用基于 XCopy Deployer 的组件来部署网站并替换该环境的所有标记化值。有关该技术的更多详细信息,请参阅我的博客文章

于 2015-01-27T23:06:44.323 回答