2010-07-15 53 views
19

我們使用msdeploy(或者web部署,如果您願意)打包和部署web應用程序。通過聲明參數包時間,我們可以在部署時提供值(以替代連接字符串等)。用msdeploy參數替換web config * elements *

我們目前面臨的問題是在我們的web配置中的applicationSettings部分替換值。我們無法使用msdeploy來替換值,因爲我們要替換的內容是xml元素中的文本,而不是屬性值(我們得到的警告是:「無法在節點類型'元素'上設置值'」)。

相關的配置是這樣的:

<applicationSettings> 
    <Name.Of.Assembly.Properties.Settings> 
    <setting name="someSetting" serializeAs="String"> 
     <value>I wanna be replaced</value> 
    </setting> 
    </Name.Of.Assembly.Properties.Settings> 
</applicationSettings> 

和申報參數XML看起來是這樣的:

<parameter name="XX" defaultValue="default"> 
    <parameterEntry kind="XmlFile" 
         scope="Web\.config$" 
         match="/configuration/applicationSettings/Name.Of.Assembly.Properties.Settings/setting[@name='someSetting']/value" /> 
</parameter> 

是否msdeploy只支持替換屬性值還是我做錯了什麼?

回答

40

爲後人......

你只需要添加「/文()」到比賽結束。這將改變標籤所包含的值。但是,在源web.config中,此值不能爲空。因此,當您使用「發佈」解決方案配置構建部署軟件包時,web.Release.config不能將該設置的值設置爲空值。

<parameter name="XX" defaultValue="default"> 
    <parameterEntry kind="XmlFile" 
         scope="Web\.config$" 
         match="/configuration/applicationSettings/Name.Of.Assembly.Properties.Settings/setting[@name='someSetting']/value/text()" /> 
</parameter> 
+0

有用,謝謝!將嘗試。 – 2010-12-23 10:41:52

+2

爲我工作--- /文本()是我失蹤。不是一個xpath專業版。這應該被標記爲答案。謝謝戴夫。 – TravisWhidden 2011-09-02 22:35:55

+1

同意@TravisWhidden - 這應該被標記爲正確的答案。 – Philippe 2011-09-15 20:57:02