我们运行一套由C#.NET 3.5编写的复杂系统,其中包括20多个网站、10多个Windows服务和各种定时任务和辅助应用程序。
每个组件都捆绑了一个或多个我们的框架和业务逻辑DLL。这些DLL具有广泛的配置设置,导致我们为同一类库的多个实例维护超过40个配置文件,这变成了噩梦。
由于以下原因,我们不在GAC中注册DLL: 1)我们喜欢灵活性,可以快速推出有选择性的项目更改,而无需重新构建整个系统或造成不必要的停机时间。 2)某些DLL的实例需要略有不同的配置;例如,某些项目使用不同的连接字符串、通知电子邮件地址等。
我们尝试使用Web.config/App.config中的AppSettings文件/configSource属性,但这些属性仅适用于相对路径,而不能跨项目使用。我们考虑将默认值保存在machine.config中,但这会使其变得混乱,并且包含与我们项目无关的重要内容。
我们目前的“解决方案”是使用自己的配置文件格式,首先检查当前项目的bin文件夹中是否存在配置文件,如果不存在,则从硬编码的中央位置加载。这样就可以在必要时覆盖设置,但其他时间可以使用默认设置。
最终,我们希望在中央位置拥有每个类库的默认设置,然后每个实例都可以具有可选配置文件,该文件仅覆盖与默认设置不同的设置。
是否有.NET行业标准的建议解决这个问题的方法?
每个组件都捆绑了一个或多个我们的框架和业务逻辑DLL。这些DLL具有广泛的配置设置,导致我们为同一类库的多个实例维护超过40个配置文件,这变成了噩梦。
由于以下原因,我们不在GAC中注册DLL: 1)我们喜欢灵活性,可以快速推出有选择性的项目更改,而无需重新构建整个系统或造成不必要的停机时间。 2)某些DLL的实例需要略有不同的配置;例如,某些项目使用不同的连接字符串、通知电子邮件地址等。
我们尝试使用Web.config/App.config中的AppSettings文件/configSource属性,但这些属性仅适用于相对路径,而不能跨项目使用。我们考虑将默认值保存在machine.config中,但这会使其变得混乱,并且包含与我们项目无关的重要内容。
我们目前的“解决方案”是使用自己的配置文件格式,首先检查当前项目的bin文件夹中是否存在配置文件,如果不存在,则从硬编码的中央位置加载。这样就可以在必要时覆盖设置,但其他时间可以使用默认设置。
最终,我们希望在中央位置拥有每个类库的默认设置,然后每个实例都可以具有可选配置文件,该文件仅覆盖与默认设置不同的设置。
是否有.NET行业标准的建议解决这个问题的方法?