10

我是否可以<appSettings />在我的 app.config 中有一个包含许多设置的部分,但它也引用<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>
4

1 回答 1

12

是的。考虑到可能的场景数量,该文档有些薄,但根据下面的引用,仅在 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>
于 2012-11-05T21:06:52.517 回答