/// <summary> /// /// </summary> /// <param name="activeProject"></param> /// <param name="identifier"></param> /// <param name="showDialog"></param> /// <param name="userChoice"></param> /// <param name="hadConfig"></param> /// <param name="filepath"></param> /// <returns></returns> public Xml.Settings.Project.Options DetermineProjectConfiguration(Project activeProject, Enumerations.ProjectIdentifier identifier, out string filepath, bool returnClone) { filepath = null; //-----get the user project settings and check if they are set to Xml.Settings.Project.Options projectOptions = Configuration.ProjectOptions.First(x => x.Identifier == identifier); if (projectOptions.GeneralOptions.Storage == Enumerations.SettingsStorage.Project) { string configName = Resources.ProjectConfigurationFilename; if (!string.IsNullOrEmpty(projectOptions.GeneralOptions.Filename)) { configName = projectOptions.GeneralOptions.Filename; if (string.IsNullOrEmpty(Path.GetExtension(configName))) { configName = string.Format("{0}.config", configName); } } LoggingManager.Instance.Logger.Debug(string.Format("configuration filename is: {0}", configName)); ProjectItem config = ExtensionUtil.GetItem(configName, activeProject.ProjectItems); if (config == null) { LoggingManager.Instance.Logger.Debug("configuration file not found, using existing configuration"); filepath = Path.Combine(Path.GetDirectoryName(activeProject.FullName), configName); XmlUtil.Serialize(filepath, Configuration.ProjectOptions.First(x => x.Identifier == identifier)); activeProject.ProjectItems.AddFromFile(filepath); activeProject.Save(); } else { filepath = ExtensionUtil.GetPropertyValue <string>(config.Properties, Resources.PropertyFullpath, null); } return(XmlUtil.Deserialize <Xml.Settings.Project.Options>(filepath)); } else { Xml.Settings.Project.Options original = Configuration.ProjectOptions.First(x => x.Identifier == identifier); if (original != null) { if (returnClone) { return(original.Clone()); } else { return(original); } } return(null); } }