예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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);
                }
            }
        }