我们正在尝试使用Visual Studio的发布管理工具(以前称为InCycle)自动化构建/部署流程。
发布管理工具包括修改web.config(或app.config)中的设置的工具。但是,在某些情况下,我希望能够做更多的事情。
例如,我们有URL重写器规则来自动将HTTP请求重定向到HTTPS。但是这对我们的开发工作站不起作用(目前)。所以," base" web.config的版本不包含重写器规则 - 它们是在构建/发布时通过web.config转换插入的。
但发布管理"配置变量"机制不允许我指定多行作为替换值 我意识到我可以删除换行符,并将XML片段压缩为单行文本。但我宁愿没有一个web.config,其行数长达数千个字符。而且我怀疑我们的IT人员 - 他们毕竟可能还需要查看/编辑文件 - 会比我更强烈地感受到这一点;)
通常,web.config转换机制有几种模式:您可以更改设置,但也可以插入或替换(或删除)整个section / XML元素。虽然不再局限于web.config文件(开箱即用),但新功能似乎更加有限。
我错过了什么吗?有没有人发现这是一个问题?你做了什么来解决它?
答案 0 :(得分:1)
您仍然可以使用xml转换来实现您想要的效果。确保在构建期间应用转换,并且构建输出文件夹中可用的结果web.config文件将包含URL重写器规则。 RM将从那里接收并应用任何其他正常的令牌替换。
以下是有关此问题的帖子:http://incyclesoftware.zendesk.com/entries/21487316-InRelease-with-Web-Deploy
如果您的发布路径中有多个阶段,例如第一阶段不应该有您的URL重写器部分,那么可能会有点困难。您需要将转换应用为部署的一部分。需要使用多个组件/操作(xcopy组件,xml转换操作/组件)。
我现在无法找到它,但我知道您可以调用一些命令行工具来实现xml转换,作为部署的一部分。
答案 1 :(得分: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的组件来部署网站并替换该环境的所有标记化值。有关该技术的详细信息,请参阅我的博文here。