2010-12-22 95 views
3

我有一個WCF服務應用程序,並在web.config設置爲調試模式(調試=真):如何通過MSBuild擴展包將web.config設置爲「debug = false」?

<compilation debug="true"> 
     <assemblies> 
      <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
      <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     </assemblies> 
    </compilation> 

我想它通過MSBuild擴展包設置爲「調試=假」(3.5版.8.0),這樣發佈的版本總是自動處於非調試模式。

顯然我需要使用XmlFile class,但它什麼都不做。
我的build文件看起來像這樣:

<Target Name="Test"> 
    <MSBuild.ExtensionPack.Xml.XmlFile TaskAction="UpdateAttribute" File="$(MSBuildProjectDirectory)\$(BuildDir)\ServiceClient\web.config" XPath="/configuration/system.web/compilation[@name='debug']" InnerText="false"/> 
    </Target> 

當我運行構建腳本,我只看到這一點:

Test: 
XmlFile: C:\MyProject\Build\ServiceClient\web.config 
Update Attribute: /configuration/system.web/compilation[@name='debug']. Value: 

沒有錯誤,沒有警告......沒什麼。
我可以看到MSBuild找到了web.config並對它做了一些操作,因爲資源管理器中的「修改日期」已設置爲現在,在運行該腳本之前情況並非如此。但文件中沒有明顯的變化。我使用diff工具來比較MSBuild之前和之後的文件版本,它們是相同的。

我也嘗試設置KeyValue而不是InnerText,但這也沒有幫助。

任何想法我做錯了什麼?

回答

4

試試這個:

<Target Name="Test"> 
    <MSBuild.ExtensionPack.Xml.XmlFile TaskAction="UpdateAttribute" File="web.config" XPath="/configuration/system.web/compilation" Key="debug" Value="false" /> 
    </Target> 

我使用的擴展包的版本3.5.8.0

+0

這是它...謝謝! – 2010-12-23 02:41:06