代码之家  ›  专栏  ›  技术社区  ›  MPelletier

多个程序的集中设置

  •  5
  • MPelletier  · 技术社区  · 15 年前

    我最近得到了一堆要维护的程序,我正试图在采用一些最佳实践方面找到一些帮助。它们本质上是三个独立的软件,使用一个公共的DLL来管理应用程序共享的一系列设置。DLL的工作方式如下:它将用户设置文件(XML文件深埋在Windows的用户配置文件夹中)与由硬编码(egad!)指定的修复文件交换。路径。

    将其保持为 用户设置 而不是应用程序设置是可以在多个位置找到DLL(每个将使用它的应用程序都有一个),因此用户设置文件是通用的(如果DLL的所有副本都是相同的编译),而使用 应用程序设置 app.config文件的数量与dll的副本的数量相同。

    我正试图想出一个更好的方法来集中这些配置,并结束无意义的文件交换。一种方法(实际上,最有可能是最好的方法)是重新设计所有3个应用程序,使它们都使用一个带有自己的“app.config”的中央dll。还有其他可推荐的场地吗?

    4 回复  |  直到 15 年前
        1
  •  7
  •   Tamas Czinege    15 年前

    你考虑过使用Windows注册表吗?我们都讨厌它,但在这种情况下,它可能是最好的选择,因为它是集中的,您可以轻松地在应用程序之间共享设置。

    编辑 :如果您不喜欢注册表(我也不怪您),您可以在应用程序数据特殊文件夹下的目录中创建XML或其他配置文件。据我所知,这就是最近的做法。

    string appData = Environment.GetFolderPath(
        Environment.SpecialFolder.LocalApplicationData));
    string folder = "MyApplicationName";
    string fileName = "settings.xml";
    string path = Path.Combine(Path.Combine(appData, folder), fileName);
    
        2
  •  2
  •   Stéphane    15 年前

    对于这个精确的问题,如果它是.NET DLL,则可以使用 GAC ,这将集中您的DLL。所有软件都知道在哪里可以访问这个DLL。这样,你就可以少吃点 重构 去做。

    这只是一个 补丁 对于 只有这个问题 . 对于新的开发,我不建议这样做。

    GAC in Wikipedia

        3
  •  2
  •   dice    15 年前

    您可以使用公用文件中的设置-很可能存储在用户设置文件夹的appdata下

    这里的优点是您不必修改任何代码。

    应用程序将其设置存储在其常规配置文件中,并参考公用文件获取dll设置:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <appSettings file="commondll.config">
        <add key="KeyToOverride" value="Original" />
        <add key="KeyToNotOverride" value="Standard" />
      </appSettings>
    </configuration>
    

    然后在common文件commondll.config中:

    <appSettings>
      <add key="KeyToOverride" value="Overridden" />
      <add key="KeyToBeAdded" value="EntirelyNew" />
    </appSettings>