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 @@ -27,6 +27,7 @@ namespace ICSharpCode.CppBinding.Project
AddProjectConfigurationsItemGroup();
base.ReevaluateIfNecessary(); // provoke exception if import is invalid
} catch (InvalidProjectFileException ex) {
Dispose();
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 @@ -27,6 +27,7 @@ namespace FSharpBinding
base.AddImport(@"$(MSBuildExtensionsPath32)\..\Microsoft F#\v4.0\Microsoft.FSharp.Targets", null);
base.ReevaluateIfNecessary(); // provoke exception if import is invalid
} catch (InvalidProjectFileException ex) {
Dispose();
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 @@ -321,6 +321,8 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
}
return solutionLocation;
} else {
if (createNewSolution)
projectCreateInformation.Solution.Dispose();
return null;
}
} else {

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

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

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

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

Loading…
Cancel
Save