我的app.config中是否有<appSettings />
部分,其中包含许多设置,但也引用了不同文件中的<appSettings />
部分?
这将允许我保留只有开发人员应该感兴趣的配置选项,例如在主窗口上显示调试输出的选项(非常混乱但对我有用)或将某些文件保存到特定位置。
具体来说,这就是我想要实现的目标:
<!-- this is the appSettings section of the normal app.config file,
which also contains everything else that app.config would -->
<appSettings configSource="AppSettings.config"> <!-- references another file -->
<add key="deployment_config_option1" value="1"/>
<add key="deployment_config_option2" value="2"/>
</appSettings>
<!-- this a new appSettings section of another file called DevSettings.Config
which only contains settings us developers are interested in
by keeping these settings in a different file,
I can ensure it's never deployed -->
<appSettings> <!-- references another file -->
<add key="show_debug_on_screen" value="true"/>
<add key="save_copy_to_desktop" value="false"/>
</appSettings>
答案 0 :(得分:12)
是。考虑到可能出现的情况数量,doc有点薄,但根据下面的引用说明,仅在appSettings标记的情况下会合并。
因为对Web.config文件的任何更改都会导致应用程序重新启动,所以使用单独的文件允许用户修改appSettings部分中的值,而不会导致应用程序重新启动。 单独文件的内容与Web.config文件中的appSettings部分合并。此功能仅限于appSettings属性。
在ASP.NET的情况下对此(下面)的测试显示它使用<add>
标记。在下级文件中使用类似<clear>
标记之类的更高级的东西显然会出现问题,尽管我没有测试边缘情况。不能说ASP以外的部署技术; Machine.Config也未经过测试。
在web.config文件中:
<appSettings file="_config\AppSettings.Config">
<add key="testing-1" value="Web.Config" />
</appSettings>
在“_config \ AppSettings.config”文件中:
<appSettings>
<add key="testing-2" value="_config/AppSettings.config" />
</appSettings>