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

Moh*_*san 9 c# configuration app-config

我正面临一个问题.

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

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

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

Ken*_*ozi 10

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

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

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

...
<configSections>
  ...
  <section name="myEndpoint" type="System.Configuration.DictionarySectionHandler" />
  ...
</configSections>
...
<myEndpoint configSource="myEndpoint.config" />
Run Code Online (Sandbox Code Playgroud)

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

<?xml version="1.0" encoding="utf-8"?>
<myEndpoint>
  <add key="myKey" value="myValue" />
</myEndpoint>
Run Code Online (Sandbox Code Playgroud)

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

var myEndpointConfig = (Hashtable)ConfigurationManager.GetSection("myEndpoint");
Console.WriteLine(myEndpointConfig["myKey"]);
Run Code Online (Sandbox Code Playgroud)


Ste*_*dit 2

正确的方法是将DLL的配置文件合并到EXE的配置文件中;开箱即用。但是当有 Web 参考时请参阅 .NET DLL 设置和配置 - 发生了什么?一种显式打开配置文件并读取它的方法。问题是您需要首先找到配置文件,这并不一定容易。如果 DLL 只是闲置,您可以检查同一目录。但如果是在 GAC 中,您会在哪里寻找?我建议坚持正确的方法。