对于部署,我编写了一个工具,可以将一些 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 ?
答案 0 :(得分:0)
最后,我使用System.Xml命名空间(XmlDocument,XmlElement等)的类而不是System.Configuration命名空间来解决我的问题。
这很好用。