【问题标题】:What is the difference between using AppDomain and ConfigurationManager when getting the path to a configuration file?获取配置文件路径时使用 AppDomain 和 ConfigurationManager 有什么区别?
【发布时间】:2011-10-18 16:08:02
【问题描述】:

获取当前配置文件的文件路径时,使用AppDomain命名空间和ConfigurationManager命名空间有什么区别?你什么时候会使用其中一个?

例如,两者都返回相同的路径:

string f1 = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;

string f2 = ConfigurationManager.OpenExeConfiguration( ConfigurationUserLevel.None ).FilePath;

【问题讨论】:

    标签: c# configuration-files appdomain configurationmanager


    【解决方案1】:

    归结为您何时以及为何需要配置文件。它的要点是:

    • ConfigurationManager 将为应用程序本身拉取配置文件(可选地受当前用户限制)。
    • AppDomain 将交回它加载的任何配置文件(在某些情况下,可能与应用程序相同)。

    作为一个粗略的例子,让我们假设一个应用程序可以使用动态添加/删除的插件。您不想在应用程序的生命周期内将这些插件程序集保留在内存中,这会破坏目的,因此您在应用程序中创建一个单独的 AppDomain。它将处理应用程序和插件程序集之间的加载和通信,执行您需要对它们执行的任何操作,并且应用程序可以在需要时通过删除 AppDomain 来卸载程序集。

    插件 AppDomain 有很多设置,您希望将它们与客户端配置文件分开,因此当您创建 AppDomain 时,您需要指定单独的文件位置。在that AppDomain 中,配置文件是那个文件

    但是,客户端配置可能取决于谁在使用它(他们可能有能力更改它并自定义他们的设置)。您宁愿使用由给定用户隔离的应用程序范围的配置,甚至不让他们选择弄乱插件特定的设置(或其他用户的设置)。 ConfigurationManager 理论上可以从任意数量的文件中提取。

    这是一个非常笼统的想法,放弃了所有的实现,但希望这开始说明两者可能有何不同。

    这里也是 AppDomainSetupOpenExeConfiguration() 的 MSDN 页面,它们可能很有用,并且包含指向配置相关资源的附加链接。

    【讨论】:

    • 这是一个很好的解释。谢谢!我将把这个问题留一两天,看看是否有其他人加入。
    猜你喜欢
    • 2010-10-16
    • 2013-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-27
    • 2014-09-12
    • 1970-01-01
    • 2015-08-05
    相关资源
    最近更新 更多