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

时间:2010-01-07 06:29:00

标签: c# configuration app-config

我正面临一个问题。

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

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

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

3 个答案:

答案 0 :(得分:9)

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

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

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

...
<configSections>
  ...
  <section name="myEndpoint" type="System.Configuration.DictionarySectionHandler" />
  ...
</configSections>
...
<myEndpoint configSource="myEndpoint.config" />

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

<?xml version="1.0" encoding="utf-8"?>
<myEndpoint>
  <add key="myKey" value="myValue" />
</myEndpoint>

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

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

答案 1 :(得分:2)

正确的方法是将DLL的配置文件合并到EXE中;这将开箱即用。但请参阅.NET DLL Settings and Config when there's a Web Reference - whats going on?了解明确打开配置文件并阅读它的方法。问题是你需要先找到配置文件,这不一定容易。如果DLL只是坐在那里,你可以检查同一目录。但如果它在GAC中,你在哪里看?我建议坚持正确的方式。

答案 2 :(得分:0)

如果您使用svcutil生成代理,这可能有所帮助:检查/config:/mergeConfig开关,以及那些您可以指定哪个配置文件接收生成的信息的开关,您可以将其合并而不是只是覆盖已有的东西。