diff options
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/MonoDevelopWorkspace.cs')
-rw-r--r-- | main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/MonoDevelopWorkspace.cs | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/MonoDevelopWorkspace.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/MonoDevelopWorkspace.cs index bdd4b2039c..0032dd5951 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/MonoDevelopWorkspace.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/MonoDevelopWorkspace.cs @@ -336,7 +336,10 @@ namespace MonoDevelop.Ide.TypeSystem protected override void ClearProjectData (ProjectId projectId)
{
var actualProject = ProjectMap.RemoveProject (projectId);
- UnloadMonoProject (actualProject);
+ // Do not unload the project if there are still project ids mappings defined for this project.
+ // This prevents the Project.Modified event being unsubscribed for the wrong project on project reload.
+ if (actualProject != null && ProjectMap.GetIds (actualProject) == null)
+ UnloadMonoProject (actualProject);
dynamicFileManager?.UnloadProject (projectId);
base.ClearProjectData (projectId);
@@ -994,7 +997,7 @@ namespace MonoDevelop.Ide.TypeSystem /// Used by tests to validate that project has been saved.
/// </summary>
/// <value>The task that can be awaited to validate saving has finished.</value>
- internal Task ProjectSaveTask { get; private set; } = Task.FromResult<object> (null);
+ internal Task ProjectSaveTask { get; private set; } = Task.CompletedTask;
internal override bool TryApplyChanges (Solution newSolution, IProgressTracker progressTracker)
{
|