From 35ab1d4ee35768992534020a563c9b599202a565 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Sat, 10 Jun 2006 14:39:42 +0000 Subject: [PATCH] Fixed SD2-841: Saving MSBuild project after deleting file from project can throw ArgumentException git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.0@1469 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Project/Src/Commands/FileMenuCommands.cs | 21 +-------------- .../Commands/SolutionNodeCommands.cs | 2 +- .../Project/Src/Project/MSBuildProject.cs | 1 + .../Services/ProjectService/ProjectService.cs | 27 +++++++++++++++++++ 4 files changed, 30 insertions(+), 21 deletions(-) diff --git a/src/Main/Base/Project/Src/Commands/FileMenuCommands.cs b/src/Main/Base/Project/Src/Commands/FileMenuCommands.cs index 4ca6e05a29..0a1a41b40e 100644 --- a/src/Main/Base/Project/Src/Commands/FileMenuCommands.cs +++ b/src/Main/Base/Project/Src/Commands/FileMenuCommands.cs @@ -7,7 +7,6 @@ using System; using System.IO; -using System.Text; using System.Windows.Forms; using ICSharpCode.Core; @@ -35,26 +34,8 @@ namespace ICSharpCode.SharpDevelop.Project.Commands public override void Run() { using (OpenFileDialog fdiag = new OpenFileDialog()) { - AddInTreeNode addinTreeNode = AddInTree.GetTreeNode("/SharpDevelop/Workbench/Combine/FileFilter"); - StringBuilder b = new StringBuilder(StringParser.Parse("${res:SharpDevelop.Solution.AllKnownProjectFormats}|")); - bool first = true; - foreach (Codon c in addinTreeNode.Codons) { - if (!first) { - b.Append(';'); - } else { - first = false; - } - string ext = c.Properties.Get("extensions", ""); - if (ext != "*.*" && ext.Length > 0) { - b.Append(ext); - } - } - foreach (string entry in addinTreeNode.BuildChildItems(this)) { - b.Append('|'); - b.Append(entry); - } fdiag.AddExtension = true; - fdiag.Filter = b.ToString(); + fdiag.Filter = ProjectService.GetAllProjectsFilter(this); fdiag.Multiselect = false; fdiag.CheckFileExists = true; if (fdiag.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm) == DialogResult.OK) { diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/SolutionNodeCommands.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/SolutionNodeCommands.cs index 7a19671a69..4427778001 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/SolutionNodeCommands.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/SolutionNodeCommands.cs @@ -64,7 +64,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands if (node != null) { using (OpenFileDialog fdiag = new OpenFileDialog()) { fdiag.AddExtension = true; - fdiag.Filter = StringParser.Parse("${res:SharpDevelop.FileFilter.AllFiles}|*.*"); + fdiag.Filter = ProjectService.GetAllProjectsFilter(this); fdiag.Multiselect = true; fdiag.CheckFileExists = true; if (fdiag.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm) == DialogResult.OK) { diff --git a/src/Main/Base/Project/Src/Project/MSBuildProject.cs b/src/Main/Base/Project/Src/Project/MSBuildProject.cs index 8f5e6b9ff6..17605acd26 100644 --- a/src/Main/Base/Project/Src/Project/MSBuildProject.cs +++ b/src/Main/Base/Project/Src/Project/MSBuildProject.cs @@ -123,6 +123,7 @@ namespace ICSharpCode.SharpDevelop.Project if (File.Exists(userSettingsFileName)) { using (MSBuildFileReader reader = new MSBuildFileReader(userSettingsFileName)) { reader.WhitespaceHandling = WhitespaceHandling.Significant; + reader.Namespaces = false; reader.MoveToContent(); // we have to skip over the XmlDeclaration (if it exists) while (reader.Read()){ if (reader.IsStartElement()) { diff --git a/src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs b/src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs index 90fd60973a..d4ba32d4d0 100644 --- a/src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs +++ b/src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs @@ -7,6 +7,7 @@ using System; using System.IO; +using System.Text; using ICSharpCode.Core; using ICSharpCode.SharpDevelop.Gui; @@ -324,6 +325,32 @@ namespace ICSharpCode.SharpDevelop.Project } } + /// + /// Returns a File Dialog filter that can be used to filter on all registered project formats + /// + public static string GetAllProjectsFilter(object caller) + { + AddInTreeNode addinTreeNode = AddInTree.GetTreeNode("/SharpDevelop/Workbench/Combine/FileFilter"); + StringBuilder b = new StringBuilder(StringParser.Parse("${res:SharpDevelop.Solution.AllKnownProjectFormats}|")); + bool first = true; + foreach (Codon c in addinTreeNode.Codons) { + string ext = c.Properties.Get("extensions", ""); + if (ext != "*.*" && ext.Length > 0) { + if (!first) { + b.Append(';'); + } else { + first = false; + } + b.Append(ext); + } + } + foreach (string entry in addinTreeNode.BuildChildItems(caller)) { + b.Append('|'); + b.Append(entry); + } + return b.ToString(); + } + static string GetPreferenceFileName(string projectFileName) { string directory = PropertyService.ConfigDirectory + "preferences";