OpenMappedExeConfigurationwithOpenExeConfigurationOpenExeConfigurationhas2overloads:OpenMappedExeConfigurationhasonly1prototype:似乎(2)和(3)都可以用来打开特定的配置文件而不是默认的应用程序.config文件。那么它们之间有什么区别呢?什么时候使用哪个?为什么我们在(1)和(2)中将UserLevel和ConfigFileLocation分开,而在(3)中将它们合并?感谢你的回复。更新我知道微软总是喜欢以多种方式做事。但它应该这样做是有原因的。有人知道我的问题的原因吗?我们需要赏金吗?)?终极.NET配置资源-破解.NET2.0配置之谜解释了这种差异:OpenExeConfiguration(String)将“.config”附加到您提供的文件名并加载该配置文件。重要的是要注意OpenExeConfiguration(stringexePath)是一种非常具有误导性的方法,因为文件名不必是正在运行的.exe[...]配置文件可以打开。OpenExeConfiguration(ConfigurationUserLevel)第二种方法OpenExeConfiguration(ConfigurationUserLevellevel)将为指定的配置级别加载适当的配置文件。Exe上下文中可用的配置级别允许您指定是否需要exe、漫游用户或本地用户配置[…]请记住,配置是分层和合并的。当请求漫游或本地用户配置时,通过machine.config合并级别,允许应用程序访问给定用户级别的完整配置。OpenMappedExeConfiguration()、OpenMappedMachineConfiguration()与OpenExeConfiguration()方法不同,OpenExpedConfiguration()方法对配置文件的位置做了一些假设,OpenMappedExeConfiguration()和OpenMappedMachineConfiguration()允许您明确指定*.config文件的位置在磁盘上。使用这些方法,您可以加载备用machine.config、从您自己选择的位置加载User.config文件(而不是让.NET框架决定一些复杂的路径)等。自定义访问时不需要版本machine.config,应该改用OpenMachineConfiguration()。OpenExeConfiguration(String)和OpenMappedExeConfiguration(ExeConfigurationFileMap,ConfigurationUserLevel)之间的区别在于映射版本允许您使用ExeConfigurationFileMap选择要打开的配置文件。如果您使用OpenExeConfiguration(string)重载,那么它将使用Machine和Exe配置位置打开配置,而映射版本将允许您选择要从任何位置加载的特定文件(显然仍然尊重权限等)。如果查看源代码,这两种方法实际上都调用了相同的实现方法:}publicstaticSystem.Configuration.ConfigurationOpenExeConfiguration(stringexePath){returnOpenExeConfigurationImpl(null,false,ConfigurationUserLevel.None,exePath);那么什么时候使用一个呢?如果您不想打开默认配置文件,请使用OpenMappedExeConfiguration。根据我的经验,我唯一一次调用这些方法之一是当我想读取非默认配置时,所以我只使用OpenMappedExeConfiguration。以上就是C#学习教程:OpenMappedExeConfiguration以及OpenExeConfiguration分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
