• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 622
  • Last Modified:

Error reading the app.config file from a Module

I was trying to read the app.config file using the code attached but I got the intellisense saying that that is an obsolete method.

Imports System.Configuration

Module modIntro
    Dim value1 As String = ConfigurationSettings.AppSettings("key1")
    Dim value2 As String = ConfigurationSettings.AppSettings("key2")
End Module

Open in new window

  • 6
  • 4
  • 2
  • +1
3 Solutions
Jacques Bourgeois (James Burger)PresidentCommented:
Try My.Settings.key1 and My.Settings.key2.

Visual studio generates a My.Settings class that is compiled into your application and has properties for all the settings portion of app.config.
This is the Good Blog to Understand
Please Go through
If you are with .net 2.0

If you are with .net 4.0
try its too

To be able to use the ConfigurationManager class you need to Add a Reference to System.Configuration in your Project References.
So to add a Reference:
1.       Right Click on References in your project in Visual Studio
2.       Click on Add Reference
3.       Click on the .NET Tab
4.       Select System.Configuration
5.       Click OK
Now you are all set to use the ConfigurationManager Class.
Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

dimensionavAuthor Commented:
Guys I have created the reference that you mentioned and I am getting the app settings like this:

Dim DBPath as String = My.Settings("DBPath")
But I got this inner exception error: {"The settings property 'DBPath' was not found."}

My app.confg file is like the attached code.

<?xml version="1.0" encoding="utf-8" ?>
            <!-- This section defines the logging configuration for My.Application.Log -->
            <source name="DefaultSource" switchName="DefaultSwitch">
                    <add name="FileLog"/>
                    <!-- Uncomment the below section to write to the Application Event Log -->
                    <!--<add name="EventLog"/>-->
            <add name="DefaultSwitch" value="Information" />
            <add name="FileLog"
                 type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" 
            <!-- Uncomment the below section and replace APPLICATION_NAME with the name of your application to write to the Application Event Log -->
            <!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> -->
    <add key="DBPath" value="Z:\temp\emp1\" />

Open in new window

dimensionavAuthor Commented:
I have read that app settings must be added / removed from the project designer (which is empty), I am confused about creating the app.config manually and adding settings to it directly.

Thanks in advance.
Jacques Bourgeois (James Burger)PresidentCommented:
Looks as if you wrote the appsettings section yourself. You are working to hard :-). Let the system work for you.

First of all, it is not in the right format.

Second, in order for My.Settings to work, Visual Studio must create the My.Settings class that provides a property for each setting. It won't do it is you type in app.config. In fact, there are very few operations that requires you to write in the configuration file. Visual Studio will do it for you most of the time.

Delete your <appSettings> section.

Go to the project properties window (Project menu or Right-click on the project in the Solution Explorer).

There is a Settings tab. Enter your setting(s) with the type(s) and default value(s). For each setting, select User or Application.

An application setting is readonly and cannot be changed by the application. An administrator will have to change it directly in the .config file if he wants to make changes once the application is distributed, and all users will get the same setting.

A User setting can be changed by the user, and will also be different for each user once it has been changed. When a user starts the application for the first time, all the users settings are copied, with their defaults, to a file in the user's personal folders. When changes are made, they are made there. So each user can have a different set of User settings.

This will enter the proper entry in app.config, and will in parallel generate the class that is used when you call My.Settings.

Dim path As String
path=My.Settings.DBPath                 'Reads the setting into the application
My.Settings.DBPath = "C:\YourPath" 'Saves the setting in memory
My.Settings.Save                             'Commit all the changed settings to the personal user's .config file

dimensionavAuthor Commented:
JamesBurger...now is pretty clear!

So, I should delete and create a new app.config file or even that (create it)  the system can do ?
Jacques Bourgeois (James Burger)PresidentCommented:
Do not create a new file, because you already have something else there. The config file is use for more than the settings, and it looks as if you are using a TraceSwitch in your application.

Delete only the section that has to do with the settings:

    <add key="DBPath" value="Z:\temp\emp1\" />

When you start working in the Settings tab, it will take care of everything for you, and My.Settings will work.
dimensionavAuthor Commented:
A final question:
I was planning to store sql code in some of this keys, do you think that a query is too much text for this purpose?
Jacques Bourgeois (James Burger)PresidentCommented:
What database are you using?

The best place to store SQL is in the database itself. It is called a query in Access, a view or a stored procedure (depending on its complexity) in SQL Server.

The configuration file is definitively not a place to store SQL. It could store the connection string, user's preferences, the status of the application when it was last close, but not code. And SQL is code.
dimensionavAuthor Commented:
I am not using any database but a recommendation would be great, consider that the application is very small, it performs a query, creates an XML file and then uploads it to a website, this runs at most every hour.
>I am not using any database
But you want to run a query? Strange. If you are using SQL Server, you can create a stored procedure and then call it from your code.

To answer your original question, replacing ConfigurationSettings with ConfigurationManager (as suggested previously I think) should have solved your problem.

My.Settings is easy but the My namespace is not available in C# whereas ConfigurationManager can be used in both VB and C#.
dimensionavAuthor Commented:

I am not using a database for configuration settings but I use VFP (DBF) tables from where I extract information.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 6
  • 4
  • 2
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now