【发布时间】:2014-05-07 13:23:42
【问题描述】:
我已将 dll 与服务 (exe) 集成在一起。该 dll 有自己的 app.config 文件。但是对于任何键/值引用的 dll 中的代码,它总是引用 exe 的配置文件而不是 dll 的配置文件。如何将 dll 的配置文件设置为当前文件,以便仅在从 dll 代码内部引用时使用?
【问题讨论】:
标签: c# app-config
我已将 dll 与服务 (exe) 集成在一起。该 dll 有自己的 app.config 文件。但是对于任何键/值引用的 dll 中的代码,它总是引用 exe 的配置文件而不是 dll 的配置文件。如何将 dll 的配置文件设置为当前文件,以便仅在从 dll 代码内部引用时使用?
【问题讨论】:
标签: c# app-config
DLL(或库文件)不能有自己的配置文件。它将始终使用“托管”应用程序配置文件。
DLL 的全部意义在于它可以被许多不同的应用程序使用,并且它本身没有配置。相反,它的“主机”将包含配置信息,因此这是“设计使然”。
【讨论】:
当您的解决方案包含多个项目时,您可以在任一项目中添加app.config;但是当您编译代码以生成最终输出时,您只会得到一个名为 <exeFileName>.exe.config 的配置文件。这是应用程序运行时 WinForms 框架将读取的唯一配置文件。
如果您的 DLL(.NET 中的程序集)指定自己的配置文件,这些配置文件将不会成为最终输出(相应程序集)的一部分。
要包含项目特定配置文件中的设置,您必须将这些配置条目(appSettings、connectionString 等)添加到主应用程序的配置文件中。
DLL 也可以从主应用程序的配置文件中读取。因此,当您在 <exeFileName>.exe.config 文件中创建这些条目时,加载的所有 DLL 都可以从文件中读取值。
注意:请注意为每个 DLL 的键使用唯一名称,因为使用键读取配置值。
【讨论】: