2013-04-24 42 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說明。