是否可以使用MSDeploy修改现有站点的web.config?
可以用Web配置文件替换某些部分(用xPath查询或正则表达式指定)。使用-declareParam en -setParam命令行开关。
像这样
msdeploy -verb:sync -source:apphostconfig="Default Web Site" -dest:package=ParameterPackage.zip -declareParam:name=param,kind=XmlFile,scope=web.config,match=//add/@value
左右:
msdeploy -verb:sync -source:package=ParameterPackage.zip -dest:auto -setParam:name=param,value=MyDefaultWebPage.htm
,如果你使用命令行你可以找到更多信息here。
如果您在IIS中从IIS导入和导出包,则可以创建一个parameters.xml文件。 Vishal Joshi有很多关于如何使用msdeploy的好帖子(例如this)
是的,你可以做到这一点。我刚刚在http://sedodream.com/2012/02/14/HowToUpdateASingleFileUsingWebDeployMSDeploy.aspx上发布了一个博客,但我也在为您复制下面的内容。
有一天,我看到一个问题发布在*上,询问是否可以使用MSDeploy更新web.config。我实际上使用了一种技术,我在之前的职位How to take your web app offline during publishing中更新了一个单独的文件,但没有太多提及。无论如何,我将向您展示如何使用MSDeploy更新单个文件(本例中为web.config)。
您可以使用contentPath提供程序来帮助更新单个文件。使用contentPath可以同步单个文件或整个文件夹。您还可以使用IIS应用程序路径来解析文件/文件夹所在的位置。例如,如果我在名为“C:\ Data \ Personal \ My Repo \ sayed-samples \ UpdateWebConfig”的本地文件夹中有一个web.config文件,并且想要更新我的IIS站点UpdateWebCfg在我的文件夹的默认网站中运行我会使用下面显示的命令。
%msdeploy% -verb:sync -source:contentPath="C:\Data\Personal\My Repo\sayed-samples\UpdateWebConfig\web.config" -dest:contentPath="Default Web Site/UpdateWebCfg/web.config"
从上面的命令,你可以看到我设置源内容路径到本地文件,并使用IIS路径{SITENAME}/{AppName的}/{文件路径}的DEST内容路径。在这种情况下,我正在更新在本地机器上运行在IIS中的站点。为了更新在远程机器上运行的程序,您必须将ComputerName和其他可能的值添加到-dest参数中。
您可以在我的github repo上查看此样本的最新来源。
谢谢说,我一直在寻找这个很长一段时间。我们不太喜欢标记化的想法,因为然后我们无法存档和查看将要部署的完整web.config,因为标记替换发生在部署时而不是构建时。我们将使用它来完全替换web.config,并将其与部署包一起归档的web.config的预先转换副本进行完整替换。这样,我们就可以获得标记化的好处,而不会降低web.config转换的便捷性 – 2016-10-27 19:09:28