将配置信息放入 DLL
Posted
技术标签:
【中文标题】将配置信息放入 DLL【英文标题】:Putting configuration information in a DLL 【发布时间】:2010-09-14 18:36:39 【问题描述】:在我的项目中,我的功能被用作 Web 应用程序和控制台应用程序(从任务调度程序启动)。为此,我将公共代码放入 Web 应用程序和控制台应用程序都在使用的 DLL 中。这很好用。
但是,控制台和 Web 应用程序现在有一个几乎相同的 App.config 和 Web.config。是否可以将此配置也放入 DLL 并使其对两个应用程序都可用?
【问题讨论】:
【参考方案1】:是的,您可以并且应该将通用配置设置放入 DLL 的配置文件中。只需将 app.config 文件添加到 DLL 项目,并确保从 DLL 中读取配置设置。部署后,您的配置文件需要具有名称“MyDLL.dll.config”(假设您的 DLL 名为“MyDLL.dll”)并且与 DLL 位于同一文件夹中。
【讨论】:
dll如何引用配置文件?它如何知道配置文件的位置? @BKSpureon:它不知道配置文件与 DLL 位于同一文件夹中 - 这只是它查找它的第一个位置。这就是为什么您不必在 DLL 中的任何位置指定配置文件的路径。 @MusiGenesis “这就是为什么您不必在 DLL 中的任何位置指定配置文件的路径。” --> 你的意思是说:这就是为什么你不必在包含 dll 的文件夹中的任何地方指定配置文件的路径?【参考方案2】:我建议您将配置加载移动到 dll 而不是整个配置,然后从不同的应用程序调用它。这是这样的:
-
您无需重新编译即可更改配置数据(总是有用的)
如果您以后需要再次拆分配置,这已经可以通过 dll 实现。
【讨论】:
【参考方案3】:你可以把通用配置放在windows注册表下,随心所欲地访问
【讨论】:
很难部署到新机器上。 仅当他手动部署时。此外,第一个读取默认值的人可以插入第一次默认值【参考方案4】:假设您使用的是 .Net,您可以设置一个 .settings 文件来存储您的配置数据 - 其中包含的数据将作为这些配置条目的默认值存储,因此即使没有 app.config 文件,您的应用程序将以这些默认值运行。
我并不是说那是件好事... 8)
因此,如果您构建一个引用您的 DLL 的项目,您将向该项目添加相同的 .settings 文件,这些设置将出现在应用程序的 app.config 文件中,并且 DLL 将能够读取这些值.如果这些值不在 app.config 中,则 dll 将使用默认值。
大多数人会认为这是一件坏事,我倾向于同意,但你就是这样。
【讨论】:
以上是关于将配置信息放入 DLL的主要内容,如果未能解决你的问题,请参考以下文章
SQLite.dll混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。