如何在类库项目类型中使用 ConfigurationManager 类
Posted
技术标签:
【中文标题】如何在类库项目类型中使用 ConfigurationManager 类【英文标题】:How to use ConfigurationManager Class in a Class Library Project type 【发布时间】:2011-12-22 14:02:48 【问题描述】:我有一个用于付款的类库项目。客户端的实时凭证在网站的 web.config 文件中,这个类库项目将以 dll 的形式添加到 bin 中。那么如何在类库中获取 ConfigurationManager 以便我可以获取客户凭证并进行付款
【问题讨论】:
【参考方案1】:将引用 System.Web
添加到您的类库。
【讨论】:
【参考方案2】:我遇到了同样的问题,我假设您想使用 ConfigurationManager
访问配置文件中的某些属性。
另一种方法是将设置文件添加到项目中。这就是我在项目中所做的:
-
右键单击项目名称,转到菜单上的“属性”链接。
点击左侧选项卡上的设置链接
如果您尚未生成 VS,将为您提供创建链接。
创建后,您可以为所需的属性添加键值对。
VS 将在您的项目中包含一个 settings.settings 文件,该文件将包含您在设置文件中添加的属性(假设您使用 C#,您应该在 Settings.Designer.cs 下看到它们)
然后您可以通过
[ProjectNamespace].Properties.Settigns.Default.[PropertyName]
在项目的类中访问这些设置
【讨论】:
这个问题是,如果您要将它紧密耦合到一个应用程序,那么拥有一个可移植的单独类库有什么意义。【参考方案3】:如果您可以将该类移出类库会更好,但如果您不能或不想这样做,那么您可以使用 System.Configuration。
1) 添加对 System.Configuration 的引用。
2) 使用 ConfigurationManager 代替 WebConfigurationManager;代码几乎相同,只需将 WebConfigurationManager 替换为 ConfigurationManager。
【讨论】:
【参考方案4】:一般而言,库中的类不应直接读取 web.config 并在构造函数中进行设置。
但是在某些情况下库可以直接读取 web.config 是可以接受的。为此,您可以定义 custom configuration section 或使用 WebConfigurationManager.AppSettings
您需要添加对 System.Web 程序集的引用,并且需要在要使用配置管理器的文件中包含命名空间 System.Web.Configuration。
【讨论】:
请您为此编写一些代码,因为我从您的链接中获得了代码,但 WebconfigurationManager 仍然没有显示在工作室的智能中 @Muhammad - 你能详细说明这个评论吗? > 为什么会这样?我认为在架构上这没问题,因为类库是在 Web 应用程序宿主的上下文中加载的。 如果你对你的类进行单元测试,你将没有 web.config 来提供它,而且库通常是可重用的实用程序,不应与它们运行的平台或上下文相关联, 除非您有一个仅用于基于 Web 的应用程序的特定库,在这种情况下,您可以定义自己的配置部分,因为配置属于应用程序而不是库。【参考方案5】:将您的类库配置设置移动到 web.config。
【讨论】:
以上是关于如何在类库项目类型中使用 ConfigurationManager 类的主要内容,如果未能解决你的问题,请参考以下文章
仅在类库输出类型中未找到 Microsoft.WITDataStore32.dll 异常
在类库项目中添加 WCF 服务引用,并在使用该类库的网站中添加相同的 WCF 引用。