2010-07-22 124 views
4

为你的单独配置文件设计好吗?为dll设置单独的配置文件是否好设计?

我注意到,当从应用程序调用dll时,它不会读取它。

dll能够读取的是machine.config文件。

+0

感谢大家的回答。意见似乎倾向于维护一个配置文件。我正在考虑维护多个配置文件。 (Windows Admin Nightmare) 现在我需要找出为什么我的DLL能够读取machine.config文件,但不能读取app.dll.config文件。 – abhi 2010-07-22 20:58:06

回答

3

看起来你有两个单独的问题。

  1. 程序的用户都不会想到在配置两个应用程序和任何相关的DLL的条款。在我看来,拥有一个单独的DLL配置文件可能会让用户感到困惑。这不是设计有一个单独的配置文件,但它不一定设计。

  2. DLLs肯定可以读取文件。检查DLL是否从正确的位置读取文件(例如,检查当前的工作目录)。

+0

这是我想在某些地方看到的东西。它可以使附加配置远离中央代码。 App.Config享受快速失控的方式。 (是的,我知道你可以用configSource手动分割文件......这样做的好处是让管理员选择分割而不是开发者。) – 2010-07-22 20:06:17

+0

哦,你可能想使用程序集的相对路径而不是工作路径。使工作路径与实际运行代码不同的位置非常容易。 – 2010-07-22 20:08:05

1

也许不是一个单独的配置文件,但你可以很容易地为每个DLL设置一个单独的配置节。那么很容易在多个来源中使用。

5

使一个DLL依赖于一个配置文件是不理想的,并且当你开始单元测试或移动它时可能会变成真正的痛苦。

更好的解决方案是从调用应用程序中的配置设置中传递任何值,例如, Web应用程序或Windows应用程序等,并存储应用程序或Web配置中所需的任何设置。

+1

+1,隐藏的依赖是魔鬼。 – 2010-07-22 20:11:52

+0

我不确定任何测试配置相关的单元测试真的是一个很好的测试... – 2010-07-22 20:27:26

1

我倾向于将配置选项传递给每个需要它们的图层。然后配置文件将作为最上层的传递约定。这对我最有意义。

在这个场景中,一个DLL不需要读取配置文件。

我对此的推理归结为关注的分离。除非DLL的要点是读取硬盘驱动器上的文件,否则它不应该读取硬盘驱动器上的任何文件。

2

这实际上取决于使用情况。对于只是主应用程序的一部分的DLL,不能。但是,对于某些插件场景,包含特定于库的配置可能会更清晰,然后您必须在程序集本身中提供其负载。你也可以通过修改应用程序自己的配置文件来做到这一点,如果它有。

因此,例如,你可能有以下具体的插件设置:

<IPluginConfiguration> 
     <PluginSpecificSetting name="PluginName">Value</PluginSpecificSetting> 
</IPluginConfiguration 

,或者你可能在一个app.config用款,像

<configuration> 
    <PluginSettings> 
     <Plugin1> 
      <PluginSpecificSetting name="PluginName">Value</PluginSpecificSetting> 
     </Plugin1> 
    </PluginSettings> 
</configuration> 

要么将​​工作,前者在某些情况下维护要简单一些,但在运行时加载会更痛苦,后者需要更多配置和维护,但在运行时可以更简单地访问。

相关问题