gpt4 book ai didi

c# - 处理多个配置文件实例的最佳方式?

转载 作者:太空狗 更新时间:2023-10-29 17:58:44 26 4
gpt4 key购买 nike

我们运行一个用 C#.NET 3.5 编写的复杂系统,包括 20 多个网站、10 多个 Windows 服务以及各种计划任务和帮助应用程序。

其中每一个都与我们的一个或多个框架和业务逻辑 DLL 捆绑在一起。这些 DLL 具有广泛的配置设置,这已经变成了一场噩梦,我们要为同一类库的多个实例维护 40 多个配置文件。

出于各种原因,我们没有在 GAC 中注册我们的 DLL:1) 我们喜欢在不重建整个系统或导致不必要的停机时间的情况下快速推出对选定项目的更改的灵 active 。2) DLL 的一些实例需要稍微不同的配置;例如,某些项目使用不同的连接字符串、通知电子邮件地址等。

我们在 Web.config/App.config 中试验了 AppSettings 文件/configSource 属性,但这些属性仅适用于相对路径,不适用于跨项目。我们考虑过在 machine.config 中保存默认值,但这是一项任务,太杂乱而且充满了与我们的项目无关的重要内容。

我们目前的“解决方案”是使用我们自己的配置文件格式,它首先检查当前项目的“bin”文件夹中的配置,如果不存在,它会从硬编码的中央位置加载。这允许我们在必要时覆盖设置,但在其余时间使用默认设置。

最终我们想要的是将每个类库的默认设置放在一个中央位置,然后每个实例都可以有一个可选的配置文件,它只覆盖那些与默认设置不同的设置。

是否有建议的行业标准方法来解决 .NET 中的这个问题?

最佳答案

如果这一切都在同一家公司内进行,为什么不将配置存储在数据库中呢?我相信 Enterprise Framework 甚至有您可以插入的适配器来执行此操作。

我知道在我们公司,因为我们的站点在 webfarms 中运行,所以我们会将配置存储在数据库中,然后如果我们需要更改某些内容,我们将使用数据库脚本更新配置。无需推送到站点,只需重新启动站点或触摸 web.config 即可强制重新加载。

我们对其他项目的另一个解决方案是使用一个数据库,该数据库包含键值对以及其他类型的配置数据,这样我们也可以轻松地更改我们网站/窗口窗体项目中使用相同组件的内容。

所以我想我的意思是,如果他们都在同一个公司/影响范围内,那么您可以使用对他们来说很重要的数据库,只需使用数据库即可。

不要污染注册表。

关于c# - 处理多个配置文件实例的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2024915/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com