如何使用.net配置文件配置多个模块

时间:2009-01-30 17:46:21

标签: .net configuration

我从我的主应用程序中引用了一些.net模块/库。可以配置每个模块/库,在构建它们之后,每个模块/库都有一个配置文件,例如MyModule1.dll.config,MyModule2.dll.config。

当我构建我的主应用程序时,app.config文件将输出到输出目录。

我想知道如何配置MyModule1,MyModule2等。我应该在app.config文件中包含每个配置部分,还是应该为每个模块添加一个配置文件?这里描述了每个模块的单独配置:http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/2710647c-6414-42c4-90b7-fd7603f55ae0/?这意味着我也会将MyModule1.dll.config和MyModule2.dll.config复制到输出目录中。

任何人都可以就什么是最佳做法/正确的方法给我一些建议?

编辑:

从MyModule1.dll我可以使用

显式加载MyModule1.dll.config
Uri p = new Uri(System.Reflection.Assembly.GetExecutingAssembly().CodeBase);
Configuration config = ConfigurationManager.OpenExeConfiguration(p.LocalPath);

但是如果MyModule1.dll引用并使用我的一个公共库MyCommonLib.dll,我如何从同一个配置文件MyModule1.dll.config配置MyCommonLib.dll?

5 个答案:

答案 0 :(得分:1)

如果您在Visual Studio中使用属性文件夹系统,并希望Visual Studio自动同步它们,您将需要使用您所描述的仅用于提高工作效率的每模块配置方法。

或者,如果您只是处理或条目,从一个配置文件可能更容易。我在这里唯一的建议就是采用最简单,最自然的方式,无论是谁/将要在该项目上工作。

答案 1 :(得分:1)

如果不确切知道你有什么配置,我会说你应该将配置文件合并到主exe配置中。这样您就不需要任何额外的代码来使事情正常工作。这就是大多数.NET应用程序的工作方式,也是大多数人所期望的。 (查看web.config - 来自所有地方的部分最终都在那里。)

如果您在Visual Studio提供的属性中使用强类型设置,这将正常工作。您只需合并configSections并将每个配置文件中的特定部分复制到主配置文件。我们已经做了一段时间了,结果很好。

答案 2 :(得分:0)

您是否考虑过使用Spring.NET来管理配置?当然,你也有很多其他功能,但配置是一个从Spring开始的好地方。

您可以在每个库的本地文件中放置一些配置,然后在主应用程序的配置文件中引用这些文件。使用您的库的人可以决定是否要引用您的配置文件,编写自己的配置文件,或者介于两者之间。

答案 3 :(得分:0)

如果您不必管理太多配置信息,我建议您使用exe.config。

或者您可以考虑使用Microsoft Enterprise Library或Spring.net附带的配置管理框架

答案 4 :(得分:0)

这完全取决于您的库与应用程序的区别。

如果将相同的库部署到多个应用程序,最好将配置保持独立。

如果它只是一个应用程序,请使用一个配置文件。然后你所有的配置都在一个地方。