Home All Groups Group Topic Archive Search About

How to maintain user.config settings when upgrading?

Author
10 Aug 2006 3:52 PM
davepkz
I have a basic question about managing user.config settings:

In my C# app, I save the user's preferences to the config file.  But
each time I release a new build of the app, something in .NET creates a
new folder (named for the build number) in Documents And Settings.  The
result is the users lose all their settings and have to start over.

What is the standard way to allow users to maintain their settings when
they get a new version of a .NET app?

thanks
Dave

Author
10 Aug 2006 8:42 PM
Mike Lowery
<dave***@hotmail.com> wrote in message
news:1155225149.646271.291150@75g2000cwc.googlegroups.com...
>I have a basic question about managing user.config settings:
>
> In my C# app, I save the user's preferences to the config file.  But
> each time I release a new build of the app, something in .NET creates a
> new folder (named for the build number) in Documents And Settings.  The
> result is the users lose all their settings and have to start over.
>
> What is the standard way to allow users to maintain their settings when
> they get a new version of a .NET app?

You could store them in a different file or use the registry.
Author
10 Aug 2006 11:35 PM
Carl Daniel [VC++ MVP]
<dave***@hotmail.com> wrote in message
news:1155225149.646271.291150@75g2000cwc.googlegroups.com...
>I have a basic question about managing user.config settings:
>
> In my C# app, I save the user's preferences to the config file.  But
> each time I release a new build of the app, something in .NET creates a
> new folder (named for the build number) in Documents And Settings.  The
> result is the users lose all their settings and have to start over.
>
> What is the standard way to allow users to maintain their settings when
> they get a new version of a .NET app?

Here's the way I do it - ClickOnce does something similar automatically.
You need to make use of the SettingsBase.Upgrade method.

Add a Setting to your project called ApplicationVersion, then use code like
the following in the startup of your applicaiton:

System.Reflection.Assembly a =
System.Reflection.Assembly.GetExecutingAssembly();
Version appVersion = a.GetName().Version;
string appVersionString = appVersion.ToString();

if (Properties.Settings.Default.ApplicationVersion != appVersion.ToString())
{
    Properties.Settings.Default.Upgrade();
    Properties.Settings.Default.ApplicationVersion = appVersionString;
}

-cd
Author
12 Aug 2006 5:37 PM
davepkz
This suggestion worked perfectly.  Thanks.
Dave


Carl Daniel [VC++ MVP] wrote:
Show quote
> Here's the way I do it - ClickOnce does something similar automatically.
> You need to make use of the SettingsBase.Upgrade method.
>
> Add a Setting to your project called ApplicationVersion, then use code like
> the following in the startup of your applicaiton:
> ...

AddThis Social Bookmark Button