4

我有一个一般性问题,但我也会解释我为什么要问,这样你就可以更好地理解我的意思。

我有一个在设置中定义了 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 文件中找不到该属性,是否会使用该属性?

4

1 回答 1

7

.NET 配置的分层特性提供了极大的灵活性,允许特定用户或位置拥有自己的配置设置。但是,这些配置设置并不是孤立的,在更具体的级别进行的重复设置能够覆盖在不太具体的级别进行的设置。如图所示,最具体的配置文件被合并到不太具体的配置文件中,最具体的设置覆盖最不具体的设置。在 Exe 上下文中,用户(或更准确地说,本地用户)设置最为具体,其次是漫游用户(在两台或多台机器之间共享)、应用程序,最后是机器。

配置层次结构和合并

我建议您阅读以下文章,因为您的答案只是引用:

有用的将是:

于 2012-10-10T15:04:05.070 回答