2012-03-01 52 views
1

我想要使用以下语法访问appSettings,并且在许多网站项目中使用过它,但在类库项目中没有使用它。在这个类库项目中,我甚至无法访问AppSettings Keys。有什么方法可以从我的课程访问AppSettings Key吗?类库项目的app.config或项目结构是以不同的方式表现的吗?无法从类库项目中的App.Config访问AppSettings

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

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

我已经添加了Project Reference到System.Configuration并导入到我的类中。当我运行我的代码时,它说:“对象未设置为任何对象的实例”。

+0

使用两个不同的密钥的名字 - “脚本”和“scriptsFolder” – Ray 2012-03-01 15:51:02

+0

我注意到,改变了,但错误仍然是一样的。我尝试不同的选择,并会尽快更新。谢谢。 – Mitul 2012-03-01 15:51:47

回答

5

库在应用程序的上下文中运行,而不是由它自己运行。

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

因此,如果您的图书馆是lib.dll,而申请是myApp.exe,则应该使用.config文件myApp.exe.config

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


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

+0

我更改了我的代码中的名称。 – Mitul 2012-03-01 15:52:18

+0

@Mitul - 和.config文件名? – Oded 2012-03-01 15:52:55

+0

这是一个混乱。在我的一个类库项目中,它是完美的。相同的代码行很好,但在这个项目中没有。我不知道为什么,都是类库项目。我现在同时有两个项目。 – Mitul 2012-03-01 15:58:17

1

我有同样的问题,并且,正如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#转换上即时,所以原谅我,如果事情是错