获取当前配置文件的文件路径时,使用AppDomain
命名空间和ConfigurationManager
命名空间有什么区别?什么时候你会用另一个?
例如,两者都返回相同的路径:
string f1 = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;
string f2 = ConfigurationManager.OpenExeConfiguration( ConfigurationUserLevel.None ).FilePath;
答案 0 :(得分:9)
归结为何时以及为什么需要配置文件。它的要点是:
作为一个粗略的例子,让我们假设一个应用程序可以使用它动态添加/删除的插件。您不希望在应用程序的生命周期内将这些插件程序集保留在内存中,这会破坏目的,因此您可以在应用程序中创建单独的AppDomain。它将处理应用程序和插件程序集之间的加载和通信,执行您需要执行的任何操作,并且应用程序可以通过在需要时删除AppDomain来卸载程序集。
插件AppDomain有很多设置,您宁愿与客户端配置文件分开,因此在创建AppDomain时,您需要指定单独的文件位置。在 AppDomain中,配置文件是该文件。
但是,客户端配置可能取决于谁在使用它(他们可能有能力更改它并自定义其设置)。您宁愿使用由给定用户隔离的应用程序范围的配置,甚至不给他们选择插入特定于插件的设置(或其他用户的设置)。从理论上讲,ConfigurationManager可以从拉出任意数量的文件。
这是一个非常普遍的想法,它将所有的实现手工拉开,但希望这开始说明两者可能有何不同。
以下是AppDomainSetup和OpenExeConfiguration()的MSDN页面,这些页面可能很有用,并且还包含指向配置相关资源的其他链接。