2013-04-24 43 views
3

我有一个Web Deploy包,它与其他所有包文件一起生成一个App.SetParameters.xml文件。 SetParameters文件有几个setParameter节点应该更新连接字符串,但每当我执行Web部署脚本时,它总是会报告0 parameters changed。查看部署的Web.config文件显示它们确实没有更新。Web Deploy为什么忽略我的setParameter标记?

部署脚本的详细输出没有说明为什么它会跳过我的参数;它甚至从未提及它们。但是,如果我改变setParameter标签之一到parameter标签它给了我一个错误:

Error: The parameter 'ConnectionString-Web.config Connection String' has already been defined.

所以这显然是在寻找我的web.config该参数。为什么只是跳过这样的参数,我完全困惑不解。

环境:

  • 的Visual Studio 2012
  • Web部署3.0
  • 的Windows Server 2008 R2
  • IIS 7

回答

1

这个问题涉及到this question提出的问题。因为我感动从Visual Studio 2010这一解决方案的Visual Studio 2012我所有的Web.config文件中仍然有这个作为他们的根节点:

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"> 

这将导致由Visual Studio 2012使用的XPath Web.config文件转换呛并导致错误:

No element in the source document matches '/configuration' 

然而,建立在Web部署包,运行Web部署包不能当,所以Web部署只是认为没有配置部分更新只出现此错误。你会认为Web.config文件中的配置节不会是一个值得警告用户的问题,但显然不是。

解决方法是从基本Web.config文件中的<configuration>节点中删除xmlns属性,从Visual Studio发布包,并确保输出中不显示“源文档中没有元素”警告了。在此之后,Web Deploy应该没有问题遵守setParameter说明。