Browse Source

Dispose the ProjectChangeWatcher when creating a new project fails.

pull/18/head
Daniel Grunwald 14 years ago
parent
commit
95cc542675
  1. 1
      src/AddIns/BackendBindings/CppBinding/CppBinding/Project/CppProject.cs
  2. 1
      src/AddIns/BackendBindings/FSharpBinding/FSharpProject.cs
  3. 2
      src/Main/Base/Project/Src/Internal/Templates/Project/ProjectTemplate.cs
  4. 3
      src/Main/Base/Project/Src/Project/AbstractProject.cs
  5. 1
      src/Main/Base/Project/Src/Project/MSBuildBasedProject.cs

1
src/AddIns/BackendBindings/CppBinding/CppBinding/Project/CppProject.cs

@ -27,6 +27,7 @@ namespace ICSharpCode.CppBinding.Project
AddProjectConfigurationsItemGroup(); AddProjectConfigurationsItemGroup();
base.ReevaluateIfNecessary(); // provoke exception if import is invalid base.ReevaluateIfNecessary(); // provoke exception if import is invalid
} catch (InvalidProjectFileException ex) { } catch (InvalidProjectFileException ex) {
Dispose();
throw new ProjectLoadException("Please ensure that the Windows SDK is installed on your computer.\n\n" + ex.Message, ex); throw new ProjectLoadException("Please ensure that the Windows SDK is installed on your computer.\n\n" + ex.Message, ex);
} }
} }

1
src/AddIns/BackendBindings/FSharpBinding/FSharpProject.cs

@ -27,6 +27,7 @@ namespace FSharpBinding
base.AddImport(@"$(MSBuildExtensionsPath32)\..\Microsoft F#\v4.0\Microsoft.FSharp.Targets", null); base.AddImport(@"$(MSBuildExtensionsPath32)\..\Microsoft F#\v4.0\Microsoft.FSharp.Targets", null);
base.ReevaluateIfNecessary(); // provoke exception if import is invalid base.ReevaluateIfNecessary(); // provoke exception if import is invalid
} catch (InvalidProjectFileException ex) { } catch (InvalidProjectFileException ex) {
Dispose();
throw new ProjectLoadException("Please ensure that the F# compiler is installed on your computer.\n\n" + ex.Message, ex); throw new ProjectLoadException("Please ensure that the F# compiler is installed on your computer.\n\n" + ex.Message, ex);
} }
} }

2
src/Main/Base/Project/Src/Internal/Templates/Project/ProjectTemplate.cs

@ -321,6 +321,8 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
} }
return solutionLocation; return solutionLocation;
} else { } else {
if (createNewSolution)
projectCreateInformation.Solution.Dispose();
return null; return null;
} }
} else { } else {

3
src/Main/Base/Project/Src/Project/AbstractProject.cs

@ -53,7 +53,8 @@ namespace ICSharpCode.SharpDevelop.Project
public virtual void Dispose() public virtual void Dispose()
{ {
WorkbenchSingleton.AssertMainThread(); WorkbenchSingleton.AssertMainThread();
watcher.Dispose(); if (watcher != null)
watcher.Dispose();
isDisposed = true; isDisposed = true;
if (Disposed != null) { if (Disposed != null) {
Disposed(this, EventArgs.Empty); Disposed(this, EventArgs.Empty);

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

@ -1161,6 +1161,7 @@ namespace ICSharpCode.SharpDevelop.Project
} catch (InvalidProjectFileException ex) { } catch (InvalidProjectFileException ex) {
LoggingService.Warn(ex); LoggingService.Warn(ex);
LoggingService.Warn("ErrorCode = " + ex.ErrorCode); LoggingService.Warn("ErrorCode = " + ex.ErrorCode);
Dispose();
throw new ProjectLoadException(ex.Message, ex); throw new ProjectLoadException(ex.Message, ex);
} finally { } finally {
isLoading = false; isLoading = false;

Loading…
Cancel
Save