以编程方式更改web.config:“buildProviders”部分

时间:2016-04-20 08:47:50

标签: c# configuration web-config

对于部署,我编写了一个工具,可以将一些 web.config 设置从开发环境修改为生产环境。除了一个案例之外,这很有效:

当我尝试将调试设置为 false 时,我的 buildProviders 部分就会消失。

这是我的 system.web 部分:

  <system.web>
    <machineKey ... />
    <compilation debug="true" strict="false" targetFramework="4.0">
      <buildProviders>
        <remove extension=".resx"/>
        <remove extension=".resources"/>
      </buildProviders>
      <assemblies>
            ...
      </assemblies>
    </compilation>

这是我的修改代码:

    private void ChangeDebugSetting()
    {
        System.Configuration.Configuration configuration = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
        System.Web.Configuration.CompilationSection comp = (System.Web.Configuration.CompilationSection)configuration.GetSection("system.web/compilation");
        comp.Debug = false;
        configuration.Save();
    }

在生成的web.config中,缺少 buildProviders 部分。

在调试器中,我可以看到 comp.BuildProviders 集合为空。但是,受保护的属性 base.Items 包含两个元素 _entryType = Removed _key =“。arex” resp。 _key =“.resources”

如何管理“删除”元素将保存到 web.config

1 个答案:

答案 0 :(得分:0)

最后,我使用System.Xml命名空间(XmlDocument,XmlElement等)的类而不是System.Configuration命名空间来解决我的问题。

这很好用。