Example #1
0
        /// <summary>
        /// Forces a read of the configuration file specified and copies the settings from
        /// the old file
        /// </summary>
        private static void UpgradeSettingsFromFile(Configuration config, UserSettingsSection settings, string oldVersionString, string newVersionString, string oldVersionConfig)
        {
            if (String.IsNullOrEmpty(oldVersionConfig) || !File.Exists(oldVersionConfig))
            {
                return;
            }

            //Log.Info("Upgrading settings from version {0} to {1}", oldVersionString, newVersionString);

            //Copy the config file so that we can modify and read
            string tempexename = Path.GetTempFileName();
            string tempconfig  = tempexename + ".config";

            try
            {
                //Make a copy and modify to ensure that we have a section declaration
                File.Copy(oldVersionConfig, tempconfig, true);
                ReplaceConfigDeclaration(tempconfig);

                //Read the new configuration
                Configuration       upgradeFrom     = ConfigurationManager.OpenExeConfiguration(tempexename);
                UserSettingsSection upgradeSettings = upgradeFrom.Sections[SECTION_NAME] as UserSettingsSection;
                if (upgradeSettings != null)
                {
                    //copy the settings
                    settings.CopyFrom(upgradeSettings);

                    //update version upgrade information
                    if (!String.IsNullOrEmpty(upgradeSettings.OriginalVersion))
                    {
                        settings.OriginalVersion = upgradeSettings.OriginalVersion;
                    }
                    else
                    {
                        settings.OriginalVersion = oldVersionString;
                    }
                    settings.UpgradedVersion = oldVersionString;
                    settings.UpgradedDate    = XmlConvert.ToString(DateTime.Now, XmlDateTimeSerializationMode.RoundtripKind);

                    //I guess it worked ;)
                    Trace.WriteLine("Settings upgrade successful.");
                }
            }
            finally
            {
                //done with our temp files
                try { File.Delete(tempexename); File.Delete(tempconfig); }
                catch { }
            }
        }
		/// <summary>
		/// Forces a read of the configuration file specified and copies the settings from
		/// the old file
		/// </summary>
		private static void UpgradeSettingsFromFile(Configuration config, UserSettingsSection settings, string oldVersionString, string newVersionString, string oldVersionConfig)
		{
			if (String.IsNullOrEmpty(oldVersionConfig) || !File.Exists(oldVersionConfig))
				return;

			//Log.Info("Upgrading settings from version {0} to {1}", oldVersionString, newVersionString);

			//Copy the config file so that we can modify and read
			string tempexename = Path.GetTempFileName();
			string tempconfig = tempexename + ".config";
			try
			{
				//Make a copy and modify to ensure that we have a section declaration
				File.Copy(oldVersionConfig, tempconfig, true);
				ReplaceConfigDeclaration(tempconfig);

				//Read the new configuration
				Configuration upgradeFrom = ConfigurationManager.OpenExeConfiguration(tempexename);
				UserSettingsSection upgradeSettings = upgradeFrom.Sections[SECTION_NAME] as UserSettingsSection;
				if (upgradeSettings != null)
				{
					//copy the settings
					settings.CopyFrom(upgradeSettings);

					//update version upgrade information
					if (!String.IsNullOrEmpty(upgradeSettings.OriginalVersion))
						settings.OriginalVersion = upgradeSettings.OriginalVersion;
					else
						settings.OriginalVersion = oldVersionString;
					settings.UpgradedVersion = oldVersionString;
					settings.UpgradedDate = XmlConvert.ToString(DateTime.Now, XmlDateTimeSerializationMode.RoundtripKind);

					//I guess it worked ;)
					Trace.WriteLine("Settings upgrade successful.");
				}
			}
			finally
			{
				//done with our temp files
				try { File.Delete(tempexename); File.Delete(tempconfig); }
				catch { }
			}
		}
		public void TestSettings()
		{			
			UserSettingsSection settings = UserSettingsSection.DefaultSettings;
			Assert.IsNull(settings);

			Configuration cfg = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
			Assert.IsNull(cfg.GetSection("userSettings"));

			settings = UserSettingsSection.UserSettingsFrom(cfg);
			Assert.IsNotNull(settings);
			Assert.IsNotNull(settings.Settings);
			Assert.IsNotNull(settings.Sections);

			settings.Settings.Add("a", "b");
			settings["1"] = "2";
			Assert.AreEqual("2", settings["1"]);
			settings["1"] = "3";
			Assert.AreEqual("3", settings["1"]);
			cfg.Save();

			ConfigurationManager.RefreshSection("userSettings");
			Assert.IsNotNull(UserSettingsSection.DefaultSettings);
			Assert.AreEqual("b", UserSettingsSection.DefaultSettings["a"]);
			Assert.IsNotNull(UserSettingsSection.UserSettings);
			Assert.AreEqual("b", UserSettingsSection.UserSettings["a"]);

			UserSettingsSection copy = new UserSettingsSection();

			settings["a"] = "b";
			settings["1"] = "2";
			settings.Sections.Add("child.test").Settings.Add("AA", "BB");

			copy.CopyFrom(settings);
			Assert.AreEqual("b", settings["a"]);
			Assert.AreEqual("2", settings["1"]);
			Assert.AreEqual("BB", settings.Sections["child.test"]["AA"]);
		}