在多个项目中共享应用程序首选项

时间:2020-03-06 14:56:09  来源:igfitidea点击:

我们有一个相当大的.NET解决方案,其中包含多个可执行项目(winforms和命令行程序)。当前,每个项目都有自己的app.config,其中包含连接字符串,邮件服务器设置等。可以想象,每当需要更新特定设置时,对每个app.config文件进行更改都不方便。

我们认为对这些设置进行集中管理的最佳做法是什么?到目前为止,我已经考虑过两种不同的方法。第一种是使用一个或者多个自定义类,该类包含设置并被序列化为XML和从XML反序列化。第二种方法是仅为单个项目定义一个app.config文件,并使用ConfigurationManager.OpenExeConfiguration()来访问它。

解决方案

在启动项目上创建App.config,并在其他项目上静态链接到它。

我们可以通过以下方式进行静态链接:转到"添加"->"现有项",然后在"文件浏览器"窗口中单击"添加"按钮时,"添加"按钮上会有一个小的向下箭头。单击此处,将显示"添加为链接"选项。这将在两个项目中放置相同的App.Config,只有一个实际文件。

如果项目具有不同的App.Config,且仅具有相同的"某些"设置,请考虑检查file参数;否则,请执行以下操作:我的意思是,我们在一个项目中可以有多个App.Config:http://weblogs.asp.net/pwilson/archive/2003/04/09/5261.aspx

只需创建一个中央common.config文件并指向它即可。

我个人建议不要从另一个程序集中引入对.config文件的不必要的依赖关系。在这种情况下,使用自定义类进行序列化听起来更清洁,但是我们可能会遇到潜在的版本问题,并且会失去app.config(节处理程序等)提供的潜在优势。

使用ConfigSource指令可以使所有设置从具有共享值的中央文件中加载。