是否可以使用MSDeploy修改现有站点的web.config?

时间:2012-01-10 13:02:09

标签: msdeploy

是否可以使用MSDeploy修改(或仅替换)现有站点的web.config?

2 个答案:

答案 0 :(得分:4)

可以替换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中导入和导出包,则可以创建一个parameters.xml文件。 Vishal Joshi有很多关于如何使用msdeploy的好帖子(例如this

答案 1 :(得分:3)

是的,你可以这样做。我刚刚在http://sedodream.com/2012/02/14/HowToUpdateASingleFileUsingWebDeployMSDeploy.aspx发布了一个博客,但我也在为你复制以下内容。

有一天,我在StackOverflow上发布了一个问题,询问是否可以使用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} / {file-path}将源内容路径设置为本地文件和目标内容路径。在这种情况下,我正在本地计算机上更新在IIS中运行的站点。为了更新在远程计算机上运行的计算机,您必须将-TeadName和可能的其他值添加到-dest参数。

您可以在我的github repo

中查看此示例的最新来源