假设有一个包含两个类库项目的.Net解决方案:一个是数据访问层,另一个是业务逻辑层。这些项目都有一个app.config
文件。还有一个Web项目和一个Windows Forms项目,每个项目都有自己的配置文件,即分别是app.config
和web.config
。
现在,如果我将Windows Forms项目设置为启动项目,运行它并通过ConfigurationSettings.AppSettings.Get("Some-key")
检查设置,结果发现我只能访问Windows Forms设置,这意味着我必须将所有应用程序设置放在此文件中。此外,我需要复制web.config
中的设置(我仍然不确定这是否是预期的行为,或者我必须以不同的方式做事情。有没有人能在这里说点什么?)
我的问题是:在相关项目中分发应用程序配置是否有意义(例如,将数据库连接字符串保留在数据访问项目配置文件中)?
如果是,那么我们如何从一个程序集访问另一个程序集的设置?
如果不是,为什么.Net要为不可执行的项目创建配置文件?
第三个问题:有没有一种简单整洁的方法来整合配置文件?
发布于 2018-08-03 23:22:27
在相关项目中分发应用程序配置是否有意义(例如,将数据库连接字符串保留在数据访问项目配置文件中)?
否-它们将被忽略。将只使用正在执行的程序集的配置文件(禁止任何特殊设置来导入其他配置,等等)
那么我们如何从一个程序集访问另一个程序集的设置呢?
未配置程序集;但配置了应用程序。这就是为什么app.config
不仅应该包含配置可执行文件所需的所有信息,还应该包含配置所有依赖程序集所需的所有信息。
为什么.Net要为不可执行的项目创建配置文件?
因此,您可以通过一个示例来了解程序集使用了哪些设置。
有没有一种简单整洁的方法来整合配置文件?
有一些工具和技巧可以让它变得更简单(随意搜索),但根据我的经验,只将生成的程序集的设置复制/粘贴到可执行项目配置中并不是太麻烦。此外,我经常为每个项目(针对dev/test/prod环境)配置多个不同的配置,因此在这些类型的场景中,自动生成主项目配置可能会变得复杂。
发布于 2018-08-03 22:26:52
如果要为多个项目创建一个公共配置文件,请使用配置文件创建一个类库项目,并为应用程序设置创建公共属性作为其他项目可用的公共属性。
https://stackoverflow.com/questions/51674131
复制相似问题