From f5c68e18cda45ab9e5abf7429392165ecf853088 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Fri, 24 Jul 2009 23:06:44 +0000 Subject: [PATCH] Fixed SD2-1550 - Exception creating new F# project when F# compiler is not installed git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/3.0@4534 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../FSharp/FSharpBinding/Project/Src/project.fs | 6 +++++- .../Src/Internal/Templates/Project/ProjectDescriptor.cs | 8 +++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/AddIns/BackendBindings/FSharp/FSharpBinding/Project/Src/project.fs b/src/AddIns/BackendBindings/FSharp/FSharpBinding/Project/Src/project.fs index 747560f66f..f387d4c1bd 100644 --- a/src/AddIns/BackendBindings/FSharp/FSharpBinding/Project/Src/project.fs +++ b/src/AddIns/BackendBindings/FSharp/FSharpBinding/Project/Src/project.fs @@ -38,7 +38,11 @@ type FSharpProject = class new (info : ProjectCreateInformation) as x = { inherit CompilableProject(info.Solution) } then x.Create(info) - base.AddImport(@"$(MSBuildExtensionsPath)\FSharp\1.0\Microsoft.FSharp.Targets", null) + try + base.AddImport(@"$(MSBuildExtensionsPath)\FSharp\1.0\Microsoft.FSharp.Targets", null) + with + | :? Microsoft.Build.BuildEngine.InvalidProjectFileException as ex -> + raise (ProjectLoadException("Please ensure that the F# compiler is installed on your computer.\n\n" + ex.Message, ex)) override x.GetDefaultItemType(fileName : string) = if String.Equals(".fs", Path.GetExtension(fileName), StringComparison.InvariantCultureIgnoreCase) then ItemType.Compile diff --git a/src/Main/Base/Project/Src/Internal/Templates/Project/ProjectDescriptor.cs b/src/Main/Base/Project/Src/Internal/Templates/Project/ProjectDescriptor.cs index e7852ff456..9f4a67271e 100644 --- a/src/Main/Base/Project/Src/Internal/Templates/Project/ProjectDescriptor.cs +++ b/src/Main/Base/Project/Src/Internal/Templates/Project/ProjectDescriptor.cs @@ -304,7 +304,13 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates StringParser.Properties["StandardNamespace"] = projectCreateInformation.RootNamespace; - IProject project = languageinfo.CreateProject(projectCreateInformation); + IProject project; + try { + project = languageinfo.CreateProject(projectCreateInformation); + } catch (ProjectLoadException ex) { + MessageService.ShowError(ex.Message); + return null; + } // Add Project items foreach (ProjectItem projectItem in projectItems) {