我有一个Visual Studio Web应用程序解决方案。我有三个项目,如UserInterface,BusinessLogic和DataAccess。
我必须存储一些用户定义的设置,并在配置文件中创建了configSections。
我通过继承自.NET的ConfigurationSection
基类的类来访问这些configSections。
因此,对于每个项目,我都有一个单独的configSection,对于相应的configSection,我在该项目中有一个继承自ConfigurationSection
的类来访问配置部分设置。
这很好用。但是,如果我需要在多个项目中使用任何设置,则会出现问题。因此,如果我需要使用UserInterface项目中的设置configSection,比如说,BusinessLogic项目我必须在BusinessLogic的configSection中实际复制该设置。这最终会在多个configSections中复制相同的设置。
这有点过于冗余吗?
答案 0 :(得分:1)
从未真正做到这一点,但从理论上讲它可能有用......
定义自定义配置部分时,将其configSource设置为外部文件(whatever.config)。此外部文件应添加到SOLUTION而不是项目中。它将显示在“解决方案项目”下。在每个项目中,添加现有文件,浏览到whatever.config,单击“添加”按钮上的下拉列表,然后选择“添加为链接”。
Whatever.config将是一个单独的文件,您可以在解决方案项下编辑,并在编译时将其复制到每个应用程序中。
答案 1 :(得分:0)
使用您的示例:
只需在Business Logic项目中创建设置,然后将Getter公开给用户界面项目。
然后UI可以在BL中查询值。您的配置设置仅在一个位置 - 可以是最低级别。
但是,如果使用新项目替换较低级别的项目,则必须确保也复制该设置。如果设置在数据访问级别中,那么这可能是一个问题,因为它是最有可能被更改的设置(例如,不同的数据库提供程序)。
答案 2 :(得分:0)
使用“共享项目”有一种更好的方法可以在very similar question here上查看我的答案。