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

时间:2012-08-24 17:51:42

标签: c# .net dll .net-3.5 configurationmanager

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

我有一个dll,它在“设置”中定义了一个webservice url,并且在运行时它使用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文件中找不到该属性,则会使用该文件吗?

1 个答案:

答案 0 :(得分:7)

  

.NET配置的分层特性提供了很好的水平   灵活性,允许特定用户或位置拥有自己的   配置设置。但是,那些配置设置不是   在更具体的级别上进行的隔离和重复设置具有   能够覆盖在较低特定级别进行的设置。可以   如图所示,最具体的配置文件被合并到   不太具体,最具体的设置覆盖了   最不具体的。在Exe上下文中,User(或者更确切地说是Local)   用户)设置是最具体的,其次是漫游用户(共享   两台或多台机器之间),应用程序,最后是机器。

Config hierarchy and merging

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

有用的将是: