为什么Web Deploy忽略我的setParameter标签?

时间:2013-04-24 02:21:01

标签: iis-7 visual-studio-2012 webdeploy

我有一个Web Deploy Package,它可以生成App.SetParameters.xml文件以及所有其他包文件。 SetParameters文件有几个setParameter节点,应该更新连接字符串,但每当我执行Web部署脚本时,它总是报告0 parameters changed。查看已部署的Web.config文件,表明它们确实没有更新。

部署脚本的详细输出没有说明为什么它会跳过我的参数;它甚至从未提及过它们。但是,如果我将其中一个setParameter代码更改为parameter代码,则会出错:

  

错误:已经定义了参数'ConnectionString-Web.config Connection String'。

所以很明显在我的Web.config中找到了这个参数。我完全混淆为什么它会跳过这样的参数。

环境:

  • Visual Studio 2012
  • Web Deploy 3.0
  • Windows Server 2008 R2
  • IIS 7

1 个答案:

答案 0 :(得分:1)

此问题与this question中提出的问题有关。因为我将此解决方案从Visual Studio 2010移至Visual Studio 2012,所有我的Web.config文件仍将此作为其根节点:

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

这会导致Visual Studio 2012 Web.config使用的xpath转换为阻塞并导致错误:

No element in the source document matches '/configuration'

但是,此错误仅在构建Web部署包时出现,而不是在运行Web部署包时出现,因此Web部署只是认为没有要更新的配置部分。你会认为Web.config文件中没有配置部分是一个值得至少警告用户的问题,但显然不是。

解决方案是从基本Web.config文件中的xmlns节点中删除<configuration>属性,从Visual Studio发布包,并确保源中的“否”元素文件&#39;警告不再出现在输出中。在此之后,Web部署应该没有任何问题来遵守您的setParameter说明。