2011-08-23 60 views
3

在VS 2010中VB.net编码,我有:VS 2010阅读配置设置

Imports System.Configuration,我加入到System.Configuration参考。

当执行

**MsgBox(ConfigurationManager.AppSettings("sDBName").ToString)** 

,它失败,用“未设置为一个对象的实例对象引用”。 设置了sDBName。

我错过了什么?


回应:

对不起,我在回复您的延迟;其他的事情要求我注意。

我的app.config文件中没有这样的部分。我通过Settings1.settings文件添加了sDBName和其他设置;这些对象在app.cong自动显示如下:

<applicationSettings> 
    <QuickRequest.Settings1> 
     <setting name="sDBName" serializeAs="String"> 
      <value>xxx</value> 
     </setting> 
     <setting name="sInputPath" serializeAs="String"> 
      <value>c:\yyy\Infile\</value> 
     </setting> 
    </QuickRequest.Settings1> 

回答

3

在VB您参考设置略有不同你用C#做。最简单的方法是使用是该项目的部分设置,然后引用它通过我的命名空间:

MessageBox.Show(My.Settings.sDBName) 

(注意,你并不需要的ToString这里,因为sDBName已经是一个字符串)。

既然要包括一个单独的设置文件,你应该能够通过调用默认的方法来获得实例,然后你的财产关闭默认的访问自己的价值观:

MessageBox.Show(Settings1.Default.sDBName) 
+1

感谢您的回复。当我输入“My.Settings”时,intellisense给了我一个列表,但我的设置不是它的一部分。我也试过“My.Settings.Item(”sDBName“)”,然后我执行了程序。当它到达那一行时,我收到一个错误,如下所示:“找不到设置属性'sDBName'。” – DeveloperM

+0

我尝试了你的第二个建议(使用“Default”)并且工作正常。但是,我想了解这里发生了什么。为什么不是第一种方法工作?为什么不引用ConfigurationManager.AppSettings?谢谢你的时间和分享您的知识! – DeveloperM

+0

您不能使用ConfigurationManager.AppSettings,因为您的设置不会进入配置的appSettings部分,但可能是userSettings部分。至于编程访问,您可以通过单击“显示Solutino资源管理器中的所有文件“按钮,然后展开Settings1以查看Settings1.Designer.vb文件。打开该文件查看您正在访问的生成代码。 –

3

您说过sDBName设置:是包含在主应用程序的配置的sDBName设置,或者只是在配置代码包含在程序集中?

它需要在入口点程序集的配置中,因为这是应用程序启动时加载的配置。

如果它在那里设置,那么你应该发布你的配置,以便我们可以看到设置来检查问题。响应


更新评论:

在App.config,设置应该出现在appSettings部分,例如:

<appSettings> 
    <add key="sDBName" value="devDB"/> 
    </appSettings> 
+0

sDBName设置在Settings1.settings文件,并出现在app.config文件为这样:<设置名称=” sDBName“serializeAs =”String“> devDB DeveloperM

0

您好我有同样的错误你检查解决方案只是图层和离开一个应用程序。以层的形式配置文件,并从其他层

1-reference to System.Configuration 
2-Imports System.Configuration 

你叫打完

As String Dim TextoConexion 

TextoConexion = ConfigurationManager.AppSettings.Item ("CONNECT"). ToString 

错误发生,因为你没有看到“CONNECT”例如

所以是应用程序调用.config

<appSettings> 
<add key="CONEC" value="Server"/> 
<add key="SERVIDOR" value="SQL2008R2"/> 
</appSettings> 
</configuration> 
0

您不需要遵循很长的过程。要做到这一点最简单的方法是

`msgBox(My.Settings.sDBName)` 

这将给你sDBName的价值