提交 68dd66eb 编写于 作者: M Matt Warren

disable workspace document events on project disconnect

上级 745f348a
......@@ -381,6 +381,11 @@ public IEnumerable<IVisualStudioHostDocument> GetCurrentDocuments()
return _documents.Values.ToImmutableArrayOrEmpty();
}
public IEnumerable<IVisualStudioHostDocument> GetCurrentAdditionalDocuments()
{
return _additionalDocuments.Values.ToImmutableArrayOrEmpty();
}
public bool ContainsFile(string moniker)
{
return _documentMonikers.ContainsKey(moniker);
......@@ -977,6 +982,11 @@ public virtual void Disconnect()
// Unsubscribe IVsHierarchyEvents
DisconnectHierarchyEvents();
var wasPushing = _pushingChangesToWorkspaceHosts;
// disable pushing down to workspaces, so we don't get redundant workspace document removed events
_pushingChangesToWorkspaceHosts = false;
// The project is going away, so let's remove ourselves from the host. First, we
// close and dispose of any remaining documents
foreach (var document in this.GetCurrentDocuments())
......@@ -984,6 +994,11 @@ public virtual void Disconnect()
UninitializeDocument(document);
}
foreach (var document in this.GetCurrentAdditionalDocuments())
{
UninitializeAdditionalDocument(document);
}
// Dispose metadata references.
foreach (var reference in _metadataReferences)
{
......@@ -1009,7 +1024,12 @@ public virtual void Disconnect()
ClearAnalyzerRuleSet();
// reinstate pushing down to workspace, so the workspace project remove event fires
_pushingChangesToWorkspaceHosts = wasPushing;
this.ProjectTracker.RemoveProject(this);
_pushingChangesToWorkspaceHosts = false;
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册