C#:管理多个App.config文件

我遇到了一个问题。

我有一个与web服务交互的DLL,它将端点配置保存在app.config文件中。

我想在我的宿主应用程序中使用这个dll。 主机应用程序有自己的配置文件。 每次更改服务端点时,我都必须将dll配置的内容合并到主机的配置中。

有没有办法可以使用两个配置文件。 所以dll使用自己的配置,而主机应用程序使用自己的配置。

配置文件可以包含外部文件。

如果您将端点的配置放在外部文件上,然后将其包含在您的主机中,则无需每次都更改主机的配置

例如:在你的app.config文件中:

...  ... 
...
...

然后myEndpoint.config看起来像这样:

     

并且您可以访问代码中的值,类似于阅读正常的应用程序设置,如下所示:

 var myEndpointConfig = (Hashtable)ConfigurationManager.GetSection("myEndpoint"); Console.WriteLine(myEndpointConfig["myKey"]); 

正确的方法是将DLL的配置文件合并到EXE中; 这将开箱即用。 但是,当有Web引用时,请参阅.NET DLL设置和配置 – 最新进展? 一种明确打开配置文件并读取它的方法。 问题是你需要首先找到配置文件,这不一定容易。 如果DLL只是坐在那里,你可以检查同一目录。 但如果它在GAC中,你在哪里看? 我建议坚持正确的方式。

如果您使用svcutil生成代理,这可能有所帮助:检查/config:/mergeConfig开关,您可以指定哪些配置文件接收生成的信息,您可以将其合并而不是仅覆盖已存在的任何内容。