public void Save(Solution solution) { if (WorkbenchSingleton.InvokeRequired) { Action<Solution> action = Save; WorkbenchSingleton.SafeThreadCall<Solution>(action, solution); } else { solution.Save(); } }
public static void SaveSolution() { if (openSolution != null) { openSolution.Save(); foreach (IProject project in openSolution.Projects) { project.Save(); } OnSolutionSaved(new SolutionEventArgs(openSolution)); } }
public override void AfterLabelEdit(string newName) { if (newName == null) { return; } if (!FileService.CheckFileName(newName)) { return; } string newFileName = Path.Combine(Path.GetDirectoryName(this.FileName), newName); if (!FileService.RenameFile(this.FileName, newFileName, false)) { return; } solution.Save(); }
public string CreateSolution(ProjectCreateInformation projectCreateInformation, string defaultLanguage) { string oldSolutionPath = projectCreateInformation.SolutionPath; string oldProjectPath = projectCreateInformation.ProjectBasePath; if (relativeDirectory != null && relativeDirectory.Length > 0 && relativeDirectory != ".") { projectCreateInformation.SolutionPath = Path.Combine(projectCreateInformation.SolutionPath, relativeDirectory); projectCreateInformation.ProjectBasePath = Path.Combine(projectCreateInformation.SolutionPath, relativeDirectory); if (!Directory.Exists(projectCreateInformation.SolutionPath)) { Directory.CreateDirectory(projectCreateInformation.SolutionPath); } if (!Directory.Exists(projectCreateInformation.ProjectBasePath)) { Directory.CreateDirectory(projectCreateInformation.ProjectBasePath); } } projectCreateInformation.SolutionPath = oldSolutionPath; projectCreateInformation.ProjectBasePath = oldProjectPath; string newSolutionName = StringParser.Parse(name, new StringTagPair("ProjectName", projectCreateInformation.SolutionName)); string solutionLocation = Path.Combine(projectCreateInformation.SolutionPath, newSolutionName + ".sln"); Solution newSolution = new Solution(new ProjectChangeWatcher(solutionLocation)); projectCreateInformation.Solution = newSolution; newSolution.Name = newSolutionName; if (!mainFolder.AddContents(newSolution, projectCreateInformation, defaultLanguage, newSolution)) { newSolution.Dispose(); return null; } // Save solution if (File.Exists(solutionLocation)) { string question = StringParser.Parse("${res:ICSharpCode.SharpDevelop.Internal.Templates.CombineDescriptor.OverwriteProjectQuestion}", new StringTagPair("combineLocation", solutionLocation)); if (MessageService.AskQuestion(question)) { newSolution.Save(solutionLocation); } } else { newSolution.Save(solutionLocation); } ProjectService.OnSolutionCreated(new SolutionEventArgs(newSolution)); newSolution.Dispose(); return solutionLocation; }
public string CreateSolution(ProjectCreateInformation projectCreateInformation, string defaultLanguage) { Solution newSolution = new Solution(); projectCreateInformation.Solution = newSolution; string newCombineName = StringParser.Parse(name, new string[,] { {"ProjectName", projectCreateInformation.ProjectName} }); newSolution.Name = newCombineName; string oldCombinePath = projectCreateInformation.SolutionPath; string oldProjectPath = projectCreateInformation.ProjectBasePath; if (relativeDirectory != null && relativeDirectory.Length > 0 && relativeDirectory != ".") { projectCreateInformation.SolutionPath = Path.Combine(projectCreateInformation.SolutionPath, relativeDirectory); projectCreateInformation.ProjectBasePath = Path.Combine(projectCreateInformation.SolutionPath, relativeDirectory); if (!Directory.Exists(projectCreateInformation.SolutionPath)) { Directory.CreateDirectory(projectCreateInformation.SolutionPath); } if (!Directory.Exists(projectCreateInformation.ProjectBasePath)) { Directory.CreateDirectory(projectCreateInformation.ProjectBasePath); } } projectCreateInformation.SolutionPath = oldCombinePath; projectCreateInformation.ProjectBasePath = oldProjectPath; if (!mainFolder.AddContents(newSolution, projectCreateInformation, defaultLanguage, newSolution)) { newSolution.Dispose(); return null; } string combineLocation = Path.Combine(projectCreateInformation.SolutionPath, newCombineName + ".sln"); // Save combine if (File.Exists(combineLocation)) { StringParser.Properties["combineLocation"] = combineLocation; if (MessageService.AskQuestion("${res:ICSharpCode.SharpDevelop.Internal.Templates.CombineDescriptor.OverwriteProjectQuestion}")) { newSolution.Save(combineLocation); } } else { newSolution.Save(combineLocation); } newSolution.Dispose(); return combineLocation; }
static bool SetupSolution(Solution newSolution) { ProjectSection nestedProjectsSection = null; // read solution files using system encoding, but detect UTF8 if BOM is present using (StreamReader sr = new StreamReader(newSolution.FileName, Encoding.Default, true)) { string line = GetFirstNonCommentLine(sr); Match match = versionPattern.Match(line); if (!match.Success) { MessageService.ShowErrorFormatted("${res:SharpDevelop.Solution.InvalidSolutionFile}", newSolution.FileName); return false; } switch (match.Result("${Version}")) { case "7.00": case "8.00": MessageService.ShowError("${res:SharpDevelop.Solution.CannotLoadOldSolution}"); return false; case "9.00": case "10.00": case "11.00": case "12.00": break; default: MessageService.ShowErrorFormatted("${res:SharpDevelop.Solution.UnknownSolutionVersion}", match.Result("${Version}")); return false; } using (AsynchronousWaitDialog waitDialog = AsynchronousWaitDialog.ShowWaitDialog("Loading solution")) { nestedProjectsSection = SetupSolutionLoadSolutionProjects(newSolution, sr, waitDialog); } } // Create solution folder 'tree'. if (nestedProjectsSection != null) { foreach (SolutionItem item in nestedProjectsSection.Items) { string from = item.Name; string to = item.Location; if (newSolution.guidDictionary.ContainsKey(to) && newSolution.guidDictionary.ContainsKey(from)) { // ignore invalid entries ISolutionFolderContainer folder = newSolution.guidDictionary[to] as ISolutionFolderContainer; folder.AddFolder(newSolution.guidDictionary[from]); } } } if (!newSolution.ReadOnly && (newSolution.FixSolutionConfiguration(newSolution.Projects))) { // save in new format newSolution.Save(); } return true; }
static bool SetupSolution(Solution newSolution, string fileName) { string solutionDirectory = Path.GetDirectoryName(fileName); ProjectSection nestedProjectsSection = null; bool needsConversion = false; // read solution files using system encoding, but detect UTF8 if BOM is present using (StreamReader sr = new StreamReader(fileName, Encoding.Default, true)) { string line = GetFirstNonCommentLine(sr); Match match = versionPattern.Match(line); if (!match.Success) { MessageService.ShowErrorFormatted("${res:SharpDevelop.Solution.InvalidSolutionFile}", fileName); return false; } switch (match.Result("${Version}")) { case "7.00": needsConversion = true; if (!MessageService.AskQuestion("${res:SharpDevelop.Solution.ConvertSolutionVersion7}")) { return false; } break; case "8.00": needsConversion = true; if (!MessageService.AskQuestion("${res:SharpDevelop.Solution.ConvertSolutionVersion8}")) { return false; } break; case "9.00": break; default: MessageService.ShowErrorFormatted("${res:SharpDevelop.Solution.UnknownSolutionVersion}", match.Result("${Version}")); return false; } while (true) { line = sr.ReadLine(); if (line == null) { break; } match = projectLinePattern.Match(line); if (match.Success) { string projectGuid = match.Result("${ProjectGuid}"); string title = match.Result("${Title}"); string location = match.Result("${Location}"); string guid = match.Result("${Guid}"); if (!FileUtility.IsUrl(location)) { location = Path.GetFullPath(Path.Combine(solutionDirectory, location)); } if (projectGuid == FolderGuid) { SolutionFolder newFolder = SolutionFolder.ReadFolder(sr, title, location, guid); newSolution.AddFolder(newFolder); } else { IProject newProject = LanguageBindingService.LoadProject(newSolution, location, title, projectGuid); ReadProjectSections(sr, newProject.ProjectSections); newProject.IdGuid = guid; newSolution.AddFolder(newProject); } match = match.NextMatch(); } else { match = globalSectionPattern.Match(line); if (match.Success) { ProjectSection newSection = ProjectSection.ReadGlobalSection(sr, match.Result("${Name}"), match.Result("${Type}")); // Don't put the NestedProjects section into the global sections list // because it's transformed to a tree representation and the tree representation // is transformed back to the NestedProjects section during save. if (newSection.Name == "NestedProjects") { nestedProjectsSection = newSection; } else { newSolution.Sections.Add(newSection); } } } } } // Create solution folder 'tree'. if (nestedProjectsSection != null) { foreach (SolutionItem item in nestedProjectsSection.Items) { string from = item.Name; string to = item.Location; ISolutionFolderContainer folder = newSolution.guidDictionary[to] as ISolutionFolderContainer; folder.AddFolder(newSolution.guidDictionary[from]); } } if (newSolution.FixSolutionConfiguration(newSolution.Projects) || needsConversion) { // save in new format newSolution.Save(); } return true; }
public static Solution Load(string fileName) { Solution newSolution = new Solution(); solutionBeingLoaded = newSolution; newSolution.Name = Path.GetFileNameWithoutExtension(fileName); string extension = Path.GetExtension(fileName).ToUpperInvariant(); if (extension == ".CMBX") { if (!MessageService.AskQuestion("${res:SharpDevelop.Solution.ImportCmbx}")) { return null; } newSolution.fileName = Path.ChangeExtension(fileName, ".sln"); ICSharpCode.SharpDevelop.Project.Converter.CombineToSolution.ConvertSolution(newSolution, fileName); if (newSolution.FixSolutionConfiguration(newSolution.Projects)) { newSolution.Save(); } } else if (extension == ".PRJX") { if (!MessageService.AskQuestion("${res:SharpDevelop.Solution.ImportPrjx}")) { return null; } newSolution.fileName = Path.ChangeExtension(fileName, ".sln"); ICSharpCode.SharpDevelop.Project.Converter.CombineToSolution.ConvertProject(newSolution, fileName); if (newSolution.FixSolutionConfiguration(newSolution.Projects)) { newSolution.Save(); } } else { newSolution.fileName = fileName; if (!SetupSolution(newSolution, fileName)) { return null; } } solutionBeingLoaded = null; return newSolution; }