/// <summary> /// Loads the configuration layer. /// </summary> /// <returns>The configuration layer.</returns> private ConfigurationLayer LoadConfigurationLayer() { var configurationLayer = new ConfigurationLayer(); configurationLayer.MachineFilePath = MachineConfigFilePath; configurationLayer.SharedFilePath = SharedConfigFilePath; configurationLayer.UserFilePath = UserConfigFilePath; if (File.Exists(configurationLayer.MachineFilePath)) { configurationLayer.MachineConfig = ConfigurationXmlSerializer.Deserialize(File.OpenRead(configurationLayer.MachineFilePath)); } if (File.Exists(configurationLayer.SharedFilePath)) { configurationLayer.SharedConfig = ConfigurationXmlSerializer.Deserialize(File.OpenRead(configurationLayer.SharedFilePath)); } if (File.Exists(configurationLayer.UserFilePath)) { configurationLayer.UserConfig = ConfigurationXmlSerializer.Deserialize(File.OpenRead(configurationLayer.UserFilePath)); } configurationLayer.ComputedConfig = ProductivityShell.Configuration.Configuration.ComputeConfig(configurationLayer.MachineConfig, configurationLayer.SharedConfig, configurationLayer.UserConfig); return(configurationLayer); }
/// <summary> /// Saves the configuration layer. /// </summary> /// <param name="configurationLayer">The configuration layer.</param> /// <param name="override">if set to <c>true</c> [@override].</param> public void SaveConfigurationLayer(ConfigurationLayer configurationLayer, bool @override) { if (configurationLayer == null) { throw new ArgumentNullException(nameof(configurationLayer)); } var configMap = new[] { new { FilePath = MachineConfigFilePath, Configuration = configurationLayer.MachineConfig }, new { FilePath = SharedConfigFilePath, Configuration = configurationLayer.SharedConfig }, new { FilePath = UserConfigFilePath, Configuration = configurationLayer.UserConfig } }; foreach (var config in configMap) { if (string.IsNullOrWhiteSpace(config.FilePath) || config.Configuration == null) { continue; } if (!@override && File.Exists(config.FilePath)) { continue; } var directoryName = Path.GetDirectoryName(config.FilePath); if (string.IsNullOrWhiteSpace(directoryName)) { continue; } Directory.CreateDirectory(directoryName); using (var fileStream = File.OpenWrite(config.FilePath)) { ConfigurationXmlSerializer.Serialize(fileStream, config.Configuration); } } }