【问题标题】:Unable to access AppSettings from App.Config in a Class Library Project无法从类库项目中的 App.Config 访问 AppSettings
【发布时间】:2012-03-20 02:58:12
【问题描述】:

我正在尝试使用以下语法访问 appSettings,我之前在我的许多网站项目中使用过它,但在类库项目中没有使用过。在这个类库项目中,我什至无法访问 AppSettings 键。有什么方法可以从我的班级访问 AppSettings 密钥?类库项目的 app.config 或项目结构的行为方式是否不同?

 Dim SharedDrive As String = ConfigurationManager.AppSettings("scriptsfolder")

<configuration>
  <appSettings>
    <add key="scriptsfolder" value="C:\BadTempScripts"/>
  </appSettings>

我已经将项目引用添加到 System.Configuration 并导入我的班级。当我运行我的代码时,它显示“对象未设置为任何对象的实例”。

【问题讨论】:

  • 您使用了两个不同的键名——“Scripts”和“scriptsFolder”
  • 我注意到它改变了,但错误保持不变。我尝试了不同的选择,很快就会更新。谢谢。

标签: vb.net app-config


【解决方案1】:

库在应用程序的上下文中运行,而不是单独运行。

您需要将配置放入将使用该库的应用程序的.config 文件中。

因此,如果您的库是 lib.dll 而应用程序是 myApp.exe,您应该使用 .config 文件 myApp.exe.config

作为使用.config 文件的替代方法,请考虑将配置作为对库类型的依赖项传递。


您的代码中有一个特定的错误,即您试图调用一个键 Scripts,而您的配置有一个键 scriptsfolder

【讨论】:

  • @Mitul - 还有 .config 文件名?
  • 混乱是这样的。在我的一个类库项目中,它运行良好。相同的代码行可以正常工作,但在这个项目中却不行。我不知道为什么,两者都是类库项目。我现在有两个项目。
  • 两个库是否在同一个应用程序中使用?
  • 它在其中工作的是一个独立的类库项目。它不工作的是一个类库项目,启动项目是一个没有 app.config 文件的控制台应用程序。我正在尝试在我的类库项目类中获取密钥。
  • @Mitul - “它正在工作的是一个独立的类库项目” - 这是不可能的。类库不能自行运行。您有一个使用它的控制台应用程序。正在使用的配置文件属于控制台应用程序。
【解决方案2】:

我遇到了同样的问题,正如 Oded 告诉我们的那样,库在应用程序的上下文中运行,但是我无法解决问题。最后我使用了这段代码:

Dim config As Configuration = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath);
Dim k as KeyValueConfigurationElement = config.AppSettings.Settings
("SVCInstalled")
 If k <> Nothing Then
 If k.Value <> Nothing Then
 ' Process your data next

注意,我是从 C# 即时翻译的,如果有问题请见谅

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-27
    • 2012-01-06
    • 1970-01-01
    • 2012-04-09
    • 1970-01-01
    • 2017-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多