让我们说一个.Net解决方案有2个类库项目:一个是数据访问层,另一个是业务逻辑层。这些项目有一个app.config
文件。还有一个Web项目和一个Windows Forms项目,每个项目都有自己的配置文件,即分别为app.config
和web.config
。
现在,如果我将Windows Forms项目设置为启动项目,运行它并通过ConfigurationSettings.AppSettings.Get("Some-key")
检查设置,结果表明我只能访问Windows Forms设置,这意味着我必须将所有该文件中的应用程序设置。另外,我需要在web.config
中重复设置(我仍然不确定这是否是预期的行为,或者我必须做不同的事情。有人可以在这里说清楚吗?)
我的问题是:在相关项目中分发应用程序配置是否有意义(例如,将数据库连接字符串保留在Data Access项目配置文件中)?
如果是,那么我们如何从一个组件访问另一个组件的设置?
如果没有,为什么.Net完全为不可执行的项目创建配置文件?
第三个问题:是否有一种整洁而简单的方法来合并配置文件?
答案 0 :(得分:2)
在相关项目中分发应用程序配置是否有意义(例如,将数据库连接字符串保留在Data Access项目配置文件中)?
否-它们将被忽略。将仅使用 executing 程序集的配置文件(禁止任何特殊设置来导入其他配置等)
然后我们如何从一个组件访问另一个组件的设置?
程序集未配置; 应用。这就是app.config
应该包含配置可执行文件和所有相关程序集所必需的所有信息的原因。
.Net为什么要为不可执行的项目创建配置文件?
因此,您有一个示例来了解程序集使用的设置。
是否有一种整洁而简单的方法来合并配置文件?
有一些工具和技巧可以使它变得更容易(可以随意搜索),但是根据我的经验,仅将生成的程序集中的设置复制/粘贴到可执行项目配置中并不会太麻烦。另外,我经常为每个项目(针对开发/测试/产品环境)配置多个多个配置,因此在这些类型的场景中,自动生成主项目配置会变得很复杂。
答案 1 :(得分:0)
如果您要为多个项目使用通用的配置文件,请使用配置文件创建一个类库项目,然后为您的应用设置创建公共属性作为其他项目可用的公共属性。