什么是.net层次结构,用于加载系统配置属性

Jim*_*Jim 4 .net c# dll configurationmanager .net-3.5

我有一个普遍的问题,但我也会解释为什么我这么问你可以更好地了解我的意思.

我有一个在设置中定义了web服务URL的DLL,并且在运行时它使用Settings.Default从设置中获取URL.但是,我们的环境都没有(dllName).dll.config文件,并且未在调用应用程序的(exeName).exe.config中定义特定设置.很明显,默认值没有被使用,因为它被设置为某个内部IP地址; 但这在生产中有效,他们没有在我能找到的任何.config文件中定义此设置,并且它仍然以某种方式访问​​正确的Web服务URL.在这种情况下,我需要知道加载值的位置.

所以我的更广泛的问题是,层次结构如何在.net中加载设置?例如,它首先在machine.config中查找,然后是(exeName).exe.config,如果它是dll,它将转到(dllName).dll.config?它首先看起来在哪里,它在其他地方的顺序是什么,还有其他地方我没有提到可以定义这个配置吗?

此外,对于DLL,如果您在"设置"中定义了某些内容,那么它是否会作为默认值嵌入到已编译的dll中,如果在任何其他.config文件中找不到该属性,那么它是否会被使用?

Reg*_*for 7

.NET配置的分层特性提供了极大的灵活性,允许特定用户或位置拥有自己的配置设置.但是,这些配置设置不是隔离的,并且在更具体的级别进行的重复设置可以覆盖在较低特定级别进行的设置.从图中可以看出,最具体的配置文件被合并到不太具体的配置文件中,最具体的设置覆盖了最不具体的设置.在Exe上下文中,User(或更确切地说,本地用户)设置是最具体的,其次是漫游用户(在两台或更多台机器之间共享),Application,最后是Machine.

配置层次结构和合并

我建议你阅读以下文章,因为你的回答只是一个引用:

有用的将是: