为你设置一个单独的配置文件是好的设计吗?
我注意到从应用程序调用dll时,它不会读取它。
dll能够读取的是machine.config文件。
答案 0 :(得分:5)
使dll依赖于配置文件并不理想,当您开始进行单元测试或移动它时,它会变得非常痛苦。
更好的解决方案是从调用应用程序中传递来自配置设置的任何值,例如WebApp或Windows App等,并存储应用程序或Web配置中所需的任何设置。
答案 1 :(得分:3)
看起来你有两个不同的问题。
您的程序的用户不会考虑配置您的应用程序和任何相关的DLL。在我看来,为DLL提供单独的配置文件可能会让用户感到困惑。拥有单独的配置文件并不是糟糕的设计,但它也不一定是良好的设计。
DLL当然可以读取文件。检查DLL是否从正确的位置读取文件(例如,检查当前工作目录)。
答案 2 :(得分:2)
这实际上取决于使用情况。对于只是主应用程序一部分的DLL,没有。但是,对于某些插件方案,包含特定于库的配置可能更清晰,然后必须在程序集本身中提供其加载。您也可以通过修改应用程序自己的配置文件(如果有)来执行此操作。
例如,您可能具有以下特定于插件的设置:
<IPluginConfiguration>
<PluginSpecificSetting name="PluginName">Value</PluginSpecificSetting>
</IPluginConfiguration
或者您可以在app.config中使用子部分,例如
<configuration>
<PluginSettings>
<Plugin1>
<PluginSpecificSetting name="PluginName">Value</PluginSpecificSetting>
</Plugin1>
</PluginSettings>
</configuration>
要么工作,前者在某些情况下更难维护,但在运行时加载更痛苦,后者需要更多的配置和维护,但可以在运行时更简单地访问。
答案 3 :(得分:1)
可能不是单独的配置文件,但您可以轻松地为每个dll设置单独的配置部分。然后它很容易在多个来源中使用。
答案 4 :(得分:1)
我倾向于将配置选项传递给需要它们的每个层。然后,配置文件将作为最上层的传递约定。这对我来说最有意义。
在这个场景中,DLL不需要读取配置文件。
我的理由归结为分离关注点。除非DLL的目的是读取硬盘上的文件,否则它不应该读取硬盘上的任何文件。