2011-08-23 100 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的價值