.net 跨多个项目共享应用程序首选项

.net 跨多个项目共享应用程序首选项,.net,app-config,.net,App Config,我们有一个相当大的.NET解决方案,包含多个可执行项目(winforms和命令行程序)。目前,每个项目都有自己的app.config,其中包含连接字符串、邮件服务器设置等。您可以想象,每当需要更新特定设置时,在每个app.config文件中进行更改并不是那么方便 您认为集中管理这些设置的最佳做法是什么?到目前为止,我考虑了两种不同的方法。第一种是使用一个自定义类(或多个类),该类包含设置,并序列化为XML并从XML反序列化。第二种方法是仅为单个项目定义app.config文件,并使用Config

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


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

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

您可以通过转到Add->Existing Item静态链接,单击文件浏览器窗口上的Add按钮时,Add按钮上有一个小的向下箭头。单击此处,将显示“添加为链接”选项。这将在两个项目上放置相同的App.Config,只有一个实际文件

如果您的项目具有不同的App.CONFIG,只有相同的一些设置,请考虑检查文件参数;我的意思是,一个项目中可以有多个App.Config:


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

我个人建议不要对另一个程序集的.config文件引入不必要的依赖关系。在这种情况下,使用带有序列化的自定义类听起来更干净,但是您会面临潜在的版本控制问题,并且会失去app.config(节处理程序等)提供的潜在优势.

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

虽然这在我开发和调试解决方案时可行,但一旦部署了解决方案,用户需要更改设置时,恐怕就行不通了。