[ACCEPTED]-Keep user's settings after altering assembly/file version-versioning
Use the built in Settings classes, you just 13 need to upgrade the settings anytime you 12 change the application version. Here's 11 how to do it: In the Settings.settings file, create 10 a new setting UpdateSettings type=bool Scope=User 9 Value=True
Include the following code before 8 you use any Settings (it can run every time 7 the app runs, as this makes running in debugger 6 easier too)
// Copy user settings from previous application version if necessary
if (MyApp.Properties.Settings.Default.UpdateSettings)
{
MyApp.Properties.Settings.Default.Upgrade();
MyApp.Properties.Settings.Default.UpdateSettings = false;
MyApp.Properties.Settings.Default.Save();
}
When your new application version 5 is run UpdateSettings will have a default 4 value of True and none of your old settings 3 will be used. If UpdateSettings is true 2 we upgrade the settings from the old settings 1 and save then under the new app version.
Here's how I solved it.
In the GUI application 11 it is very easy to restore the settings 10 by executing
Properties.Settings.Default.Upgrade ();
Properties.Settings.Default.Reload ();
Properties.Settings.Default.NewVersionInstalled = false;
Properties.Settings.Default.Save ();
However, I've always had the 9 problem that all other libraries lost their 8 settings when a new version has been installed. With 7 the following implementation the software 6 runs through all assemblies of the AppDomain 5 and restores the settings of the respective 4 library:
foreach(var _Assembly in AppDomain.CurrentDomain.GetAssemblies())
{
foreach(var _Type in _Assembly.GetTypes())
{
if(_Type.Name == "Settings" && typeof(SettingsBase).IsAssignableFrom(_Type))
{
var settings = (ApplicationSettingsBase)_Type.GetProperty("Default").GetValue(null, null);
if(settings != null)
{
settings.Upgrade();
settings.Reload();
settings.Save();
}
}
}
}
I've implemented the code in the 3 App.xaml.cs of the GUI project and it will 2 always be executed when the setting "NewVersionInstalled" was 1 set to true by a new version.
Hope this helps!
More Related questions
We use cookies to improve the performance of the site. By staying on our site, you agree to the terms of use of cookies.