Browse Source

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
shortcuts
Daniel Grunwald 20 years ago
parent
commit
35ab1d4ee3
  1. 21
      src/Main/Base/Project/Src/Commands/FileMenuCommands.cs
  2. 2
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/SolutionNodeCommands.cs
  3. 1
      src/Main/Base/Project/Src/Project/MSBuildProject.cs
  4. 27
      src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs

21
src/Main/Base/Project/Src/Commands/FileMenuCommands.cs

@ -7,7 +7,6 @@ @@ -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 @@ -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) {

2
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/SolutionNodeCommands.cs

@ -64,7 +64,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -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) {

1
src/Main/Base/Project/Src/Project/MSBuildProject.cs

@ -123,6 +123,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -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()) {

27
src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs

@ -7,6 +7,7 @@ @@ -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 @@ -324,6 +325,32 @@ namespace ICSharpCode.SharpDevelop.Project
}
}
/// <summary>
/// Returns a File Dialog filter that can be used to filter on all registered project formats
/// </summary>
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";

Loading…
Cancel
Save