如何通过MSBuild扩展包将web.config设置为“debug=false”?

4

我有一个WCF服务应用程序,web.config设置为调试模式(debug = true):

    <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)将“debug=false”设置为非调试模式,以便发布版本始终自动处于非调试模式。显然我需要使用XmlFile类,但它什么也没做。 我的构建文件如下:
  <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并对其进行了一些操作,因为资源管理器中的“修改日期”设置为刚才,而在运行脚本之前不是这种情况。 但是文件中没有可见的更改。我使用了差异工具来比较MSBuild之前和之后的文件版本,它们是相同的。
我还尝试了设置KeyValue代替InnerText,但也没有帮助。
有什么想法我做错了什么吗?
1个回答

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。


如果您不想使用MSBuild扩展包,还可以使用XmlPoke。 - Scott Coates

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接