【问题标题】:How to set web.config to "debug=false" via MSBuild Extension Pack?如何通过 MSBuild 扩展包将 web.config 设置为“debug=false”?
【发布时间】:2010-12-22 17:45:00
【问题描述】:

我有一个 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 class,但它没有任何作用。
我的构建文件如下所示:

  <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,但这也无济于事。

知道我做错了什么吗?

【问题讨论】:

    标签: msbuild web-config msbuildextensionpack


    【解决方案1】:

    试试这个:

      <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 Extension Pack也可以使用XmlPoke
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2015-08-25
    相关资源
    最近更新 更多