From 055d7ca8c2ee23eff3cb153ba95b87ab6466f213 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Wed, 17 Mar 2010 19:43:07 +0000 Subject: [PATCH] Handle InvalidProjectFileException when loading MSBuild projects. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@5621 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Src/Project/MSBuildBasedProject.cs | 44 ++++--------------- 1 file changed, 9 insertions(+), 35 deletions(-) diff --git a/src/Main/Base/Project/Src/Project/MSBuildBasedProject.cs b/src/Main/Base/Project/Src/Project/MSBuildBasedProject.cs index 18c627fb18..90d9511c01 100644 --- a/src/Main/Base/Project/Src/Project/MSBuildBasedProject.cs +++ b/src/Main/Base/Project/Src/Project/MSBuildBasedProject.cs @@ -20,6 +20,7 @@ using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Project.Converter; using Microsoft.Build.Construction; using Microsoft.Build.Evaluation; +using Microsoft.Build.Exceptions; using MSBuild = Microsoft.Build.Evaluation; using StringPair = System.Tuple; @@ -1142,6 +1143,10 @@ namespace ICSharpCode.SharpDevelop.Project isLoading = true; try { LoadProjectInternal(loadInformation); + } catch (InvalidProjectFileException ex) { + LoggingService.Warn(ex); + LoggingService.Warn("ErrorCode = " + ex.ErrorCode); + throw new ProjectLoadException(ex.Message, ex); } finally { isLoading = false; } @@ -1153,46 +1158,15 @@ namespace ICSharpCode.SharpDevelop.Project this.FileName = loadInformation.FileName; this.ActivePlatform = loadInformation.Platform; - //try { projectFile = ProjectRootElement.Open(loadInformation.FileName, projectCollection); - /*} catch (MSBuild.InvalidProjectFileException ex) { - LoggingService.Warn(ex); - LoggingService.Warn("ErrorCode = " + ex.ErrorCode); - bool isVS2003ProjectWithInvalidEncoding = false; - if (ex.ErrorCode == "MSB4025") { - // Invalid XML. - // This MIGHT be a VS2003 project in default encoding, so we have to use this - // ugly trick to detect old-style projects - using (StreamReader r = File.OpenText(fileName)) { - if (r.ReadLine() == "") { - isVS2003ProjectWithInvalidEncoding = true; - } - } - } - if (ex.ErrorCode == "MSB4075" || isVS2003ProjectWithInvalidEncoding) { - // MSB4075 is: - // "The project file must be opened in VS IDE and converted to latest version - // before it can be build by MSBuild." - try { - Converter.PrjxToSolutionProject.ConvertVSNetProject(fileName); - projectFile.Load(fileName); - } catch (System.Xml.XmlException ex2) { - throw new ProjectLoadException(ex2.Message, ex2); - } catch (MSBuild.InvalidProjectFileException ex2) { - throw new ProjectLoadException(ex2.Message, ex2); - } - } else { - throw new ProjectLoadException(ex.Message, ex); - } - }*/ string userFileName = loadInformation.FileName + ".user"; if (File.Exists(userFileName)) { - //try { + try { userProjectFile = ProjectRootElement.Open(userFileName, projectCollection); - /*} catch (MSBuild.InvalidProjectFileException ex) { - throw new ProjectLoadException("Error loading user part " + userFileName + ":\n" + ex.Message); - }*/ + } catch (InvalidProjectFileException ex) { + throw new ProjectLoadException("Error loading user part " + userFileName + ":\n" + ex.Message, ex); + } } else { userProjectFile = ProjectRootElement.Create(userFileName, projectCollection); }